在oracle/postgresql中快速复制表上数据的方法



我正在研究一个spring-boot应用程序,该应用程序用于根据上次更新日期将数据从临时表复制到永久表。只有当上次更新的日期大于所需日期时,它才会复制,因此不会复制所有记录。目前,该表有大约300K以上的记录,春季JPA的过程需要2个多小时(对于所有记录(,根本不可行。我们的目标是将比赛时间限制在15分钟以内。我想看看使用JDBCtemplate会带来多大的不同。pl/sql脚本会是更好的选择吗?还想看看是否有更好的选择。感谢您抽出时间。

目前正在使用oracle数据库,但可能会进行postgresql迁移。

谢谢!

您可以使用一个直接的SQL查询(它将在Oracle或PostgreSQL上工作(来执行此操作。假设您的temp_table与永久表具有相同的列,则最后更新的日期列称为last_updated,并且您希望复制自2020-05-03以来更新的所有记录,则可以编写如下查询:

INSERT INTO perm_table
SELECT *
FROM temp_table
WHERE last_updated > TO_DATE('2020-05-03', 'YYYY-MM-DD')

在您的应用程序中,您可以通过占位符直接或通过JdbcTemplate传递'2020-05-03'

最新更新