首页 > 解决方案 > 在 oracle/postgresql 中复制表数据的最快方法

问题描述

我正在查看一个 Spring Boot 应用程序,该应用程序用于根据上次更新日期将数据从临时表复制到永久表。仅当上次更新日期大于所需日期时才会复制,因此不会复制所有记录。目前该表有大约 300K+ 记录,并且使用 spring JPA 的过程需要 2 多个小时(对于所有这些记录)并且根本不可行。目标是将其缩短到最多 15 分钟以下。我想看看使用 JDBC 模板会带来多大的不同。pl/sql 脚本会是更好的选择吗?还想看看是否有更好的选择。珍惜你的时间。

目前使用 oracle 数据库,但准备进行 postgresql 迁移。

谢谢!

标签: springoracleplsqlspring-data-jpaspring-jdbc

解决方案


您可以使用直接的 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')

在您的应用程序中,您将'2020-05-03'通过占位符直接或通过JdbcTemplate.


推荐阅读