[英]Copy table having millions of records from one database to another - Spring Boot + Spring JDBC
处理一个小例子,必须将数百万条记录从teradata数据库复制到Oracle DB。
环境:Spring Boot + Spring JDBC(jdbcTemplate)+ Spring REST + Spring Scheduler + Maven + Oracle + Teradata
使用Spring JDBC的batchUpdate将数据插入目标数据库Oracle。
在源数据库的SQL查询中使用teradata的“前1000名”。
fecthDataResults = repository.queryForList(
"select top 1000 A, B, C, D, E from " + schemaName + ".V_X");
从视图“V_X”查询。
这个视图有4000万条记录,如果它运行,春季启动应用程序将会阻塞。
还插入目标Oracle DB中的2个表(主表和备份表)。
什么是获取和加载/复制4000万条记录的最佳方法,确保将复制成功完成到2个表中。
Spring Scheduler以指定的时间/间隔计划批量复制。 Spring Rest可以手动调用复制 - 两者都可以实现。
任何建议,将不胜感激。
谢谢。
您可以通过不同的方式解决此问题:
Logstash方法 - 指定源和目标数据,并将数据加载到目标DB。 它具有cron支持,并且logstash可以根据计划运行。 它要快得多。 您可以指定每次要获取的行数。
使用ETL工具。 如果您确实拥有生态系统,则可以使用任何开源版本。 Talend是一个很好的候选人,你可以设计你的工作并导出为可运行的Jar。 您可以使用您选择的任何组件来安排此操作。
春批。 请参考这个问题。 Spring RESTful Web服务 - 高容量数据处理
Spring云数据流或Spring引导,MQ作为数据源之间的中间存储。 您可能必须引入消息队列来处理故障转移,回退机制。 高度可靠,可以以异步方式实现。
我的个人意见是与Logstash一起使用。 如果您认为上述任何解决方案都有意义。 如果你愿意,我可以详细说明。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.