使用Java将数据从一个数据库服务器传输到另一个

时间:2014-09-11 05:18:14

标签: java sql jdbc sybase

我真的不会问很多问题,但这一次,它太过分了。这就是问题所在。 我有这两个数据库(Sybase)服务器,这个数据库有超过90个表,但我只需要存档20个表。

然而,这些表非常大,可以包含多达9000万条记录。所以这就是交易。目前,我所做的是

  • 对于大表(很多记录),我创建临时表并从临时表复制到目标,但为每个语句运行插入。
  • 复制完成后,我删除创建的临时表。

现在,我已尝试过其他方法,例如。

  1. 到目前为止,多线程还可以,但档案的速度还不够好。例如,它可以在一小时内存档多达1.6M的记录。这对我的Boss来说还不够好。
  2. 请提供有关您认为可以提供帮助的任何其他解决方案,方法或想法的建议。请注意,欢迎所有解决方案。

    提前致谢。

2 个答案:

答案 0 :(得分:1)

请勿自行复制此类数据。创建数据库作业以复制/存档表。并监视应用程序中这些作业的输出/日志。它会快得多。

答案 1 :(得分:1)

  1. 生成SQL执行脚本并将其传递给数据库。它意味着从select语句中获取所有记录并创建insert/update语句:
  2. String query = "UPDATE OR INSERT INTO TABLE (ID, VALUE) VALUES (9, 2) MATCHING (IDPRODUCT, COUNT); "+ "UPDATE OR INSERT INTO TABLE (ID, VALUE) VALUES (10, 1) MATCHING (IDPRODUCT, COUNT); "+ "COMMIT WORK;";

    1. 如果Sybase可以连接到其他Sybase实例创建过程,则执行previous子句。对于FierebirdSQL,可以通过ON EXTERNALEXECUTE PROCEDURE with procedure name as parameter说明。
    2. The users need to monitor and know how the tool is running.对于每个提交的表更新用户界面。