【发布时间】:2019-11-20 09:44:47
【问题描述】:
我有一个 pandas 数据框,它有 10 列和 1000 万行。
我在 pgadmin4(一个管理数据库的应用程序,如 MSSQL 服务器)中创建了一个空表,用于存储这些数据。
但是,当运行以下命令时:
my_dataframe.to_sql('name_of_sql_table',connection, index = False, if_exists = 'append', method="multi")
考虑到进程太长/内存不足,它需要很长时间才能运行并且经常使我的 jupyter 内核崩溃。
有没有什么可取的方法来加快“将pandas发送到sql表”?
我能想到的一些事情是将数据拆分为 100 万行块,然后一次发送一个 - 在运行 to_sql() 方法时附加行。
我没有直接将数据加载到 pgadmin4 的选项 - 我唯一的方法是将数据从 python 发送到 pgadmin。
【问题讨论】:
-
我建议您先尝试拆分方法,这应该非常简单,如果本地计算机上的内存是问题,它应该会有所帮助。
-
即使是 1M 行,对于一次运行的 sql server 命令来说也是很多的,尤其是对于需要稳定性的生产系统。最好的猜测是分裂。我曾经有一个循环运行并使用
df.iloc[i:i+chuncksize].to_sql(....),我每次都会增加chuncksize -
我建议块大小可能是 10k-100k,如果你把它做得太小,你会增加很多事务开销,事情又会开始变慢。
标签: python pandas postgresql pgadmin