我正在使用 java (jdbc) 将一些数据从 10Gb 文件导入到 postgres 数据库表中。导入过程需要更多 12 小时才能完成,因此需要改进导入过程。我尝试了用于插入的复制命令。一些选择命令也与插入表一起运行。任何人都可以提出提高速度的方法吗?
问问题
3810 次
1 回答
4
当需要数百万行时,标准 SQLINSERT
语句的开销通常太大。INSERT
10 GiB 的数据实际上并没有那么多,但对于(您要么有一个巨大的事务,要么提交/回滚每个 INSERT)来说肯定太多了。
有一个不错的14.4。在官方文档中填充数据库章节。14.4.2. 使用COPY
对您来说特别有趣:
用于
COPY
在一个命令中加载所有行,而不是使用一系列 INSERT 命令。该COPY
命令针对加载大量行进行了优化;它不如 灵活INSERT
,但对大数据加载产生的开销要小得多。由于COPY
是单个命令,因此如果您使用此方法填充表,则无需禁用自动提交。
也可以看看:
于 2012-11-25T17:02:53.997 回答