spring - 在 oracle/postgresql 中复制表数据的最快方法
问题描述
我正在查看一个 Spring Boot 应用程序,该应用程序用于根据上次更新日期将数据从临时表复制到永久表。仅当上次更新日期大于所需日期时才会复制,因此不会复制所有记录。目前该表有大约 300K+ 记录,并且使用 spring JPA 的过程需要 2 多个小时(对于所有这些记录)并且根本不可行。目标是将其缩短到最多 15 分钟以下。我想看看使用 JDBC 模板会带来多大的不同。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')
在您的应用程序中,您将'2020-05-03'
通过占位符直接或通过JdbcTemplate
.
推荐阅读
- timeout - ActiveMQ Artemis 错误 - AMQ224088:与 LB 握手时超时(10 秒)
- dynamics-crm - 找不到 Dynamics CRM 365 业务应用程序页面
- bash - 隐藏分段错误,同时让以下命令了解此事件
- sql-server-2005 - 配置jbpm(版本7.28.0)服务器启动Mssql
- bash - 如何重构 bash 脚本以运行两个 angular 实例
- cron - Databricks 计划作业的 Cron 表达式
- c# - 基于列自动对整个 ListView 进行排序 C#
- tableau-api - Tableau 中的小时转换
- php - 如何使用 php 清理电子邮件并保留撇号等字符?
- android - ReamList 和 List 的 Kotlin 序列化序列化程序