如何加快postgres数据库的导入过程?

时间:2012-11-25 16:56:16

标签: java postgresql-8.4

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

1 个答案:

答案 0 :(得分:2)

当需要数百万行时,标准SQL INSERT语句通常具有太大的开销。 10 GiB的数据并不是那么多,但对于INSERT来说肯定太多了(你要么每次INSERT都有一个巨大的事务或提交/回滚)。

官方文档中有一个很好的14.4. Populating a Database章节。 14.4.2。使用COPY 对您来说特别有趣:

  

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

另见: