
一.項目背景
一個目錄下有若干個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文章
780瀏覽量
44809 -
文件
+關注
關注
1文章
578瀏覽量
25212 -
csv
+關注
關注
0文章
39瀏覽量
5989
發布評論請先 登錄
相關推薦
熱點推薦
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是一種結構化查詢語言,用于通過編程語言與數據庫進行通信。它允許用戶從數據庫中檢索、修改和刪除數據。在本文中
評論