emh*_*emh 6 python postgresql amazon-rds pandas
我有一个 2200 万行 .csv 文件(~850mb),我正在尝试将其加载到 Amazon RDS 上的 postgres 数据库中。每次它都会失败(我收到超时错误),即使我将文件分割成更小的部分(每行 100,000 行),甚至当我使用chunksize.
我现在所做的就是将 .csv 作为数据帧加载,然后使用将其写入数据库df.to_sql(table_name, engine, index=False, if_exists='append', chunksize=1000)
我正在使用 sqlalchemy 中的 create_engine 来创建连接:engine = create_engine('postgresql:database_info')
我测试过写入少量数据没有psycopg2问题,但写入 1000 行大约需要 50 秒。显然对于 22m 行来说这是行不通的。
还有什么我可以尝试的吗?
熊猫数据框。to_sql () 方法并不是专门为大型插入而设计的,因为它不使用PostgreSQL COPY命令。常规 SQL 查询可能会超时,这不是 pandas 的错,它由数据库服务器控制,但可以根据连接进行修改,请参阅此页面并搜索“statement_timeout”。
我建议您考虑使用 Redshift,它针对数据仓库进行了优化,并且可以使用Redshift Copy命令直接从 S3 存储桶读取大量数据转储。
如果您无法使用 Redshift,我仍然建议您找到一种使用PostgreSQL COPY命令来执行此操作的方法,因为它的发明正是为了避免您遇到的问题。
| 归档时间: |
|
| 查看次数: |
3074 次 |
| 最近记录: |