【发布时间】:2020-11-27 18:55:33
【问题描述】:
我用 Python 编写了一个插入 Sybase 数据库的程序,我使用 pandas 1.0.4 和 SQLAlchemy 1.3.18。
我已经在 sybase 和我的脚本之间建立了链接,但实际上插入表格的速度真的很慢(30k 行需要 10 分钟...)
在 SQL Server 中,使用相同的代码(create_engine 中的参数 fast_executemany=True 和 dataframe.to_sql() 的参数 method='multi', chunksize = 500 除外),我已将插入时间缩短为 3 秒。
你有什么办法解决这个问题吗?
祝你有美好的一天!
【问题讨论】:
-
使用
method='multi'违背了使用fast_executemany=True的目的。前者使 Pandas 发出单独的INSERT ... VALUES (...), (...), ...语句(这就是为什么您需要合适的块大小),而后者加速executemany()(这是 Pandas/SQLA 默认的)。 -
好的,谢谢。但实际上它并不能解决我的问题。我不明白为什么 method='multi' 和 chunksize 在 SQL Server 上工作而在 Sybase 上不工作
-
Sybase 是否支持 INSERT 中的
VALUES (...), (...), ...子句(特别是多个元组)?不幸的是,我对 Sybase 的经验为 0,但这似乎暗示它(某些版本的“它”)没有:stackoverflow.com/questions/24635327/… -
我刚刚看到您发送的链接。因此,最好制作 df.read_sql_query 并使用之前创建的 Union ALL 发出一个大请求并使用循环。但这真的很无聊:(
标签: python database sqlalchemy sybase