将数据批量插入PostgreSQL

时间:2018-12-06 21:01:57

标签: java postgresql spring-boot

我有SpringBoot项目,该项目将从一个数据库中提取大量数据,对其进行某种转换,然后将其插入PostgreSQL数据库的表中。此过程将持续进行数十亿条记录,因此性能至关重要。

我一直在研究尝试找到最好的方法来做到这一点,例如使用ORM或JDBCTemplate。关于PostgreSQL的批量插入,我一直看到的一件事是 COPY命令https://www.postgresql.org/docs/current/populate.html

我很困惑,因为使用COPY要求将数据写入文件中,虽然我看到有人说要使用它,但我还没有遇到有人提到如何将数据输入到文件中的情况。文件。写入文件不是很慢吗?如果写入文件的速度很慢,那么COPY确实带来了性能上的提升,这是否就意味着根本没有提升?

1 个答案:

答案 0 :(得分:0)

这类数据迁移和转换最好在存储过程中处理。假设源数据已经加载到postgres中(如果未使用,则使用postgres db实用程序将原始数据加载到某个平面表中)。然后编写一系列存储的proc以转换数据并插入到目标表中。

我已经完成了一些复杂的数据迁移,并且我使用了这种方法。如果您必须进行许多复杂的数据转换,请编写一些python脚本(通常比spring boot /数据设置更快),插入经过部分转换的数据,然后执行一些存储的proc进行最终转换。

最好保留业务逻辑以将数据转换/按摩到靠近数据源(在存储的proc中),而不是将数据拉到应用服务器并重新插入。

希望有帮助。