如何在 PostgreSQL DB 优化方法中使用 morgrify psycopg2 最佳方法从数据帧插入 11M 记录

问题描述

我有两列 imjp_number(20 digit varchar) 和 imct_id(text) 作为 11M 记录的 ct_data 数据框,对于 1M、3M,它在 63 秒和 210 秒内成功插入了所有记录,我担心的是一次 11M 记录。

# Creating a list of tupples from the dataframe values
tpls = [tuple(x) for x in ct_data.to_numpy()]

args_str = b','.join(cursor.mogrify("(%s,%s)",x) for x in tpls)

cursor.execute("INSERT INTO dummy_data_table VALUES " + args_str.decode('utf-8'))

conn.commit()

cursor.close()

当我尝试使用上述方法将 11M 记录插入到 dummy_data_table 时,它​​通过以下错误

cursor.execute("INSERT INTO dummy_data_table  VALUES " + args_str.decode('utf-8'))
psycopg2.OperationalError: SSL SYSCALL error: EOF detected

我正在考虑将我的 ct_data 数据帧拆分和划分为 3M,然后尝试插入需要手动更改脚本的文件键,因为我正在从 s3 存储桶读取 csv 文件,否则我如何插入所有 11M 记录一次性进入我的 Postgresql 数据库表。

我想到的最后一个选项是使用 ct_data 数据帧的块大小来插入如何实现这种最佳方式。请建议我的选择和方法

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)