在SQL Server表中插入巨大的pandas数据框



我正在寻找一种在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列的数据,并指定这些列中的每一列都不是真正的时间效率:(

我将感激任何帮助!

  1. 在SqlAlchemy中创建连接
  2. 使用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()

相关内容

  • 没有找到相关文章

最新更新