我有一个熊猫数据框,其中有10列和1000万行。
我已在pgadmin4(用于管理数据库(如MSSQL Server)的应用程序)中创建了一个空表,用于存储此数据。
但是,当运行以下命令时:
my_dataframe.to_sql('name_of_sql_table',connection, index = False, if_exists = 'append', method="multi")
要花很长时间才能运行,并且由于该进程太长/内存不足,因此我的jupyter内核经常崩溃。
是否有建议的方法来加快“将熊猫发送到sql表”?
[我可以想到的一些事情是将数据分割成100万行块,然后一次发送一次-在运行to_sql()
方法时追加行。
我没有选择直接将数据加载到pgadmin4的选项-我唯一的方法是将数据从python发送到pgadmin。
看看https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_sql.html
如果这适用于您的pandas
版本,请使用
df.to_sql("table_name",
connection,
index=False,
if_exists='append',
chunksize=25000,
method=None)
您的查询可能因为您正在使用method='multi'
而崩溃,因为这样做是出于以下目的:
方法:{无,‘多’,可通话},默认为无控制使用的SQL插入子句:“ multi”:在单个INSERT子句中传递多个值。可通过签名(pd_table,conn,键,data_iter)调用。详细信息和示例可调用实现可以在部分insert方法中找到。
这意味着pandas
将在内存中为所有行构造该语句。每行使用chunksize
和一个INSERT
语句将允许pandas
将保存分块到数据库。