使用df.to_sql将DataFrame导入到sql中

一、背景

虽然已经有了一些导入到数据库的方式,但是代码量大,而且碰到特殊字符,比如单引号等,就会出错。

可参考:https://www.cnblogs.com/qianslup/p/17694731.html

https://www.cnblogs.com/qianslup/p/12567284.html

于是发现了to_sql这个功能。

也算是对之前的一个更新迭代

 

 

二、数据准备

 

三、代码展示

 1 import pandas as pd
 2 import pymssql
 3 from sqlalchemy import create_engine
 4 
 5 # 链接sql server数据库 注意:此处的连接信息,要改成你自己的
 6 conn = pymssql.connect(server="qiansl", user="sa", password="666666", database="Test")  # 这段代码没用,只是给engine做说明的
 7 # 创建sql server引擎  注意:此处的连接信息,要改成你自己的 参照上面的写
 8 # engine = create_engine('mssql+pymssql://user:password@server/database')
 9 engine = create_engine('mssql+pymssql://sa:666666@qiansl/Test')
10 
11 path_file = r"E:\Test\InsertSql.xlsx"
12 sheet_name = "Sheet1"
13 
14 
15 if path_file[-4:] == "xlsx":
16     df = pd.read_excel(io=path_file, sheet_name=sheet_name, dtype=str)
17 elif path_file[-3:] == "csv":
18     df = pd.read_csv(filepath_or_buffer=path_file, dtype=str)
19 
20 """
21 if_exists 的三个值
22 'fail':表存在时引发错误, 默认值。
23 'replace':表存在时删除旧表并创建新表。
24 'append':表存在时追加数据,不存在时创建新表。
25 """
26 df.to_sql(name='test', con=engine, schema='test', if_exists='replace', index=False, chunksize=1000)

 

四、结果展示

 

五、总结

总体上比之前好用太多了。

至于null和NaN,因为Python读取时,将其设为了NaN。

可参考:https://www.cnblogs.com/qianslup/p/18388847

 

posted @ 2025-03-10 11:04  qsl_你猜  阅读(684)  评论(0)    收藏  举报