我正在寻找一种在Python中插入大数据集到SQL Server表的方法。问题是我的数据框架在Python中有超过200列,目前我正在使用以下代码:
import pyodbc
import pandas as pd
server = 'yourservername'
database = 'AdventureWorks'
username = 'username'
password = 'yourpassword'
cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER='+server+';DATABASE='+database+'UID='+username+';PWD='+ password)
cursor = cnxn.cursor()
for index, row in df.iterrows():
cursor.execute("INSERT INTO dbo.mytable (A,B,C)values(?,?,?)", row.A, row.B, row.C)
cnxn.commit()
cursor.close()
问题是在INSERT INTO dbo.mytable (A, B, C) VALUES (?,?,?)", row.A, row.B, row.C
,因为我需要插入一个超过200列的数据,并指定这些列中的每一列都不是真正的时间效率:(
我将感激任何帮助!
- 在SqlAlchemy中创建连接
- 使用
df.to_sql()
和chunksize
参数。链接到文件
p。在我的情况下,连接不在sqlalchemy
不工作在to_sql
-功能
好了,我终于找到办法了:
serverName = 'xxx'
dataBase = 'zzz'
conn_str = urllib.parse.quote_plus(r'DRIVER={SQL Server};SERVER=' + serverName + r';DATABASE=' + dataBase + r';TRUSTED_CONNECTION=yes')
conn = 'mssql+pyodbc:///?odbc_connect={}'.format(conn_str)
engine = sqlalchemy.create_engine(conn,poolclass=NullPool)
connection = engine.connect()
df.to_sql("TableName", engine, schema='SchemaName', if_exists='append', index= True, chunksize=200)
connection.close()