使用需要转储到PostgreSQL表中的大型pandas DataFrame。从我所读到的,一次性转储所有内容并不是一个好主意(我正在锁定数据库)而是使用chunksize
参数。答案here对工作流程很有帮助,但我只是询问chunksize对性能的影响。
In [5]: df.shape
Out[5]: (24594591, 4)
In [6]: df.to_sql('existing_table',
con=engine,
index=False,
if_exists='append',
chunksize=10000)
是否存在建议的默认值,并且在设置参数更高或更低时性能是否存在差异?假设我有内存支持更大的chunksize,它会执行得更快吗?
答案 0 :(得分:3)
就我而言,当我使用 Pandas to_sql
函数参数作为 chunksize=5000 和 method='multi' 时,在 8 分钟内插入了 5 列的 3M 行。这是一个巨大的改进,因为使用 python 将 300 万行插入到数据库中对我来说变得非常困难。
答案 1 :(得分:0)
我尝试了另一种方式。从sql到csv,我注意到chunksize越小,工作就越快。在作业中添加额外的cpu(多处理)并没有改变任何东西。