在 oracle/postgresql 中复制 table 数据的最快方法
Quickest way to copy over table data in oracle/postgresql
我正在查看 spring 引导应用程序,它用于根据上次更新日期将数据从临时文件复制到永久文件 table。它仅在上次更新日期大于所需日期时才复制,因此并非所有记录都被复制。目前 table 有大约 300K+ 条记录,使用 spring JPA 的过程需要 2 个多小时(对于所有记录)并且根本不可行。目标是将其减少到最多 15 分钟以下。我想看看使用 JDBCtemplate 会带来多少不同。pl/sql 脚本会是更好的选择吗?还想看看是否有更好的选择。感谢您的宝贵时间。
目前正在使用 oracle 数据库,但正在准备迁移 postgresql。
谢谢!
您可以使用直接的 SQL 查询执行此操作(这将适用于 Oracle 或 PostgreSQL)。假设您的 temp_table 与永久 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'
。
我正在查看 spring 引导应用程序,它用于根据上次更新日期将数据从临时文件复制到永久文件 table。它仅在上次更新日期大于所需日期时才复制,因此并非所有记录都被复制。目前 table 有大约 300K+ 条记录,使用 spring JPA 的过程需要 2 个多小时(对于所有记录)并且根本不可行。目标是将其减少到最多 15 分钟以下。我想看看使用 JDBCtemplate 会带来多少不同。pl/sql 脚本会是更好的选择吗?还想看看是否有更好的选择。感谢您的宝贵时间。
目前正在使用 oracle 数据库,但正在准备迁移 postgresql。
谢谢!
您可以使用直接的 SQL 查询执行此操作(这将适用于 Oracle 或 PostgreSQL)。假设您的 temp_table 与永久 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'
。