【发布时间】:2021-06-06 14:39:33
【问题描述】:
我有一个场景,我需要在表之间进行批量插入,我配置了我的 sqlalchemy 引擎来做到这一点。我配置为在每个块中进行批量插入( chunksize: 10000 ),但我仍然逐行插入。
destengine = sqlalchemy.create_engine(
"mssql+pyodbc://"+destuser+":"+destpass+"@"+destaddress+""+destdatabase+"?driver=ODBC+Driver+17+for+SQL+Server", echo=False, fast_executemany = True)
for chunk in pd.read_sql( selectquery, srcconnection, chunksize=100000):
chunk.to_sql("MyTable", destengine, if_exists='append', index = False )
如上所述,我在我的连接字符串中选择了 ODBC 驱动程序作为 ODBC 驱动程序 17,我在我的引擎中将 fast_executemany 设置为 true。我究竟做错了什么?我的表有数百万行和 100 多列。我是 Pandas 的新手,但我认为我所做的与示例相同。
【问题讨论】:
-
感谢@GordThompson 的评论,但在这种情况下,插入是通过查询进行的,并且具有光标和对 executemany() 函数的调用。在我的情况下,我使用 sqlalchemy 的 to_sql() 来进行插入。我这样做是因为我有 100 多列,所以在代码中编写插入查询会很困难而且很难看
标签: python sql-server pandas sqlalchemy pyodbc