一.项目背景
一个目录下有若干个Csv/Excel文件,现在需求是根据这些Csv文件的表头,生成对
应的SQL建表语句。
二.实现过程
1.获取文件
》》遍历路径下文件
》》获取Excel文件
》》返回文件路径
#获取文件路径
def get_path(file_path):
#存储路径信息
path_list=[]
#遍历路径下文件
for file in os.listdir(file_path):
#获取文件名称
file_name=os.path.splitext(file)[0]
#判断是否为Excel文件
if file.endswith('.xlsx'):
#添加文件路径
path_list.append((os.path.join(file_path,file),file_name))
#返回文件路径
return path_list
2.构建Mysql类
》》初始化Mysql连接
》》运行SQL语句
#MySQL类
class Mysql_connect():
def __init__(self, host, user, password, database):
#初始化连接信息
self.conn = pymysql.connect(host=host,
user=user,
password=password,
database=database
)
#运行sql语句
def run_sql(self, sql):
#获取游标
cursor = self.conn.cursor()
#执行SQL语句
cursor.execute(sql)
#提交事务
self.conn.commit()
#关闭连接
self.conn.close()
3.获取sql语句
》》读取文件名称
》》获取表头和类型
》》生成SQL语句
#获取sql语句
def get_sql(table_name,df,length=255):
'''
table_name:表名称
df:DataFrame数据结构
length:默认是255
'''
#存储sql语句列表
create_list=[]
#遍历每一列
for col in df.columns.tolist():
#判断数据类型
if df[col].dtypes=='float':
#构建sql语句
sql_col=col+' '+'float'
#添加到列表
create_list.append(sql_col)
#判断数据类型
elif df[col].dtypes=='int64' or df[col].dtypes=='int32' or df[col].dtypes=='int':
#构建sql语句
sql_col=col+' '+'int'
#添加到列表
create_list.append(sql_col)
#判断数据类型
elif df[col].dtypes=='datetime64[ns]':
#构建sql语句
sql_col=col+' '+'datetime'
#添加到列表
create_list.append(sql_col)
else:
#构建sql语句
sql_col=col+' '+f'varchar({length})'
#添加到列表
create_list.append(sql_col)
#添加主键,替换列表中不必要内容
table_str='id int(64) primary key not null auto_increment,'+str(create_list).replace('[','').replace(']','').replace("'","")
#设置引擎
sql_create=f'''create table if not exists {table_name}({table_str})'''+' engine=innodb default charset=utf8'
#返回sql语句
return sql_create
4.生成数据库表格
》》运行SQL语句生成表格
#遍历该目录下文件
for files in get_path('./'):
#获取文件名称
name=files[1]
#读取表格
df=pd.read_excel(files[0])
#获取sql语句
sql=get_sql(name,df)
#连接MySQL
conn=Mysql_connect('127.0.0.1','root','253611','test')
#输出sql语句
print(sql+'n')
#运行sql语句
conn.run_sql(sql)
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
SQL
+关注
关注
1文章
773浏览量
44236 -
文件
+关注
关注
1文章
570浏览量
24811 -
csv
+关注
关注
0文章
39浏览量
5851
发布评论请先 登录
相关推荐
labviEW中使用LabSQL在数据库创建新表
的说明请搜索百度,另外需要下载LabSQL才能运行这个程序。补:程序中最后应该加一个别Connection Close.vi的,不知怎么忘了加了,在使用中是要加上的。 对于创建新的ACCESS数据库而不是在现在的数据库里面新建
发表于 03-23 10:38
数据库教程之数据库的创建与管理详细资料免费下载
本文档的主要内容详细介绍的是数据库教程之数据库的创建与管理详细资料免费下载。内容包括了:SQL Server数据库概述, 创建
发表于 10-19 10:41
•18次下载
创建新的数据库和更改SQL Server CE数据库中的数据操作教程免费下载
SQL Server CE 中的数据库是存储结构化数据的表集合。在可以存储数据库之前,必须创建数据库
发表于 09-19 11:28
•5次下载
SQLite数据库与python的区别
SQLite数据库与python的区别 SQLite是一种轻量级关系型数据库管理系统,是一个嵌入式的数据库引擎。Python是一种高级编程语
python有什么用 如何用python创建数据库
python有什么用 如何用python创建数据库 Python是一种高级编程语言,可以用于开发各种类型的应用程序和工具。它的广泛应用使它在
使用SQL语句创建数据库
使用SQL语句创建数据库 在今天的信息社会中,数据库是信息化建设的关键要素之一,已经成为企业和组织的重要管理工具。创建数据库是
sql怎么用代码创建数据库
sql怎么用代码创建数据库 SQL是一种结构化查询语言,用于通过编程语言与数据库进行通信。它允许用户从数据库中检索、修改和删除数据。在本文中
评论