1

我正在使用 java (jdbc) 将一些数据从 10Gb 文件导入到 postgres 数据库表中。导入过程需要更多 12 小时才能完成,因此需要改进导入过程。我尝试了用于插入的复制命令。一些选择命令也与插入表一起运行。任何人都可以提出提高速度的方法吗?

4

1 回答 1

4

当需要数百万行时,标准 SQLINSERT语句的开销通常太大。INSERT10 GiB 的数据实际上并没有那么多,但对于(您要么有一个巨大的事务,要么提交/回滚每个 INSERT)来说肯定太多了。

有一个不错的14.4。在官方文档中填充数据库章节。14.4.2. 使用COPY对您来说特别有趣:

用于COPY在一个命令中加载所有行,而不是使用一系列 INSERT 命令。该COPY命令针对加载大量行进行了优化;它不如 灵活INSERT,但对大数据加载产生的开销要小得多。由于COPY是单个命令,因此如果您使用此方法填充表,则无需禁用自动提交。

也可以看看:

于 2012-11-25T17:02:53.997 回答