将大量csv文件导入PostgreSQL数据库的有效方法

Fre*_*edG 8 python csv import postgresql-9.1

我看到很多将CSV导入PostgreSQL数据库的例子,但我需要的是将500,000个CSV导入单个PostgreSQL数据库的有效方法.每个CSV有点超过500KB(总共大约272GB的数据).

CSV的格式相同,没有重复记录(数据是从原始数据源以编程方式生成的).我一直在寻找并将继续在线搜索选项,但我希望能以最有效的方式完成任务.我确实有一些Python的经验,但会深入研究其他合适的解决方案.

谢谢!

Gar*_*ees 7

如果您从阅读PostgreSQL指南"填充数据库"开始,您将看到几条建议:

  1. 在单个事务中加载数据.
  2. 使用COPY,如果在所有可能的.
  3. 在加载数据之前删除索引,外键约束等,然后恢复它们.

PostgreSQL的COPY声明已经支持CSV格式:

COPY table (column1, column2, ...) FROM '/path/to/data.csv' WITH (FORMAT CSV)
Run Code Online (Sandbox Code Playgroud)

所以看起来你最好不要使用Python,或仅使用Python来生成所需的COPY语句序列.

  • 在加载272 GB数据的上下文中,几十万个SQL命令是小变化. (2认同)

Mic*_*ael 0

你那里有很多不错的数据。我对 Postgre 不是 100% 确定,但至少 MySQL 提供了一些 SQL 命令,可以将 csv 直接输入到表中。这绕过了任何插入检查等,这就是为什么比任何普通插入操作快一个数量级以上的原因。

因此,最快的方法可能是创建一些简单的 python 脚本,告诉你的 postgre 服务器,哪些 csv 文件按什么顺序贪婪地吞噬它的无穷无尽的表。