pandas.DataFrame.to_sql中的最佳chunksize参数

时间:2016-02-04 13:58:30

标签: python postgresql pandas

使用需要转储到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,它会执行得更快吗?

2 个答案:

答案 0 :(得分:3)

就我而言,当我使用 Pandas to_sql 函数参数作为 chunksize=5000 和 method='multi' 时,在 8 分钟内插入了 5 列的 3M 行。这是一个巨大的改进,因为使用 python 将 300 万行插入到数据库中对我来说变得非常困难。

答案 1 :(得分:0)

我尝试了另一种方式。从sql到csv,我注意到chunksize越小,工作就越快。在作业中添加额外的cpu(多处理)并没有改变任何东西。