比较DB2中不同数据库中的两个表

时间:2014-01-27 06:49:41

标签: java db2

我有一个要求,我希望在DB2中不同数据库中的表之间协调数据,并将差异作为报告放在java中。

我想到的方法是:

  • 阅读Java Map Collection中的第一个表
  • 阅读Java Map Collection中的第二个表
  • 比较两张地图
  • 在报告中输出差异

还有其他有效的方法可以通过java和sql来完成吗?

这些表将包含大约10到15列和大约20000行数据。

我的方法是否正确?

P.S。:不允许将一个表联合到另一个数据库等的事情。

1 个答案:

答案 0 :(得分:0)

如果桌子太大,你可以填满内存。这不是一件好事。

您可以做的是使用两个连接的Java存储过程(一个定义了SP,另一个是远程连接) 您可以通过“模拟”Zig Zag连接来比较两个表。首先,对所有列进行排序(按1,2,4,...排序),然后在一个数据库中获取表的第一行,并将其与另一个数据库的表的第一行进行比较。如果两者相同,则向前推进。如果它们不相同,则向前移动较低的值,直到到达另一个表的相同值。您将差异呈现给用户,您也可以给出相似之处。

例如,具有两列的表(c1 char(1),c2 int)

DB1                 DB2
Table 1 | Zig zag | Table 1
c1 | c2 |    |    | c1 | c2   
a    1    1      1  a    1
b    2    2      2  c    2
                 3  d    3
e    3    3
f    4    4      4  f    4
f    5    5      5  f    6
f    7    6
                 6  f    8

的diff

DB1 Table 1
c1 | c2
b    2
e    3
f    5
f    7

DB2 Table 1
c1 | c2
c    2
d    3
f    6
f    8

Similarities
2 rows
c1 | c2
a    1
f    4

然后,您的存储过程可以返回3个结果集,指示每个表的差异以及相似之处。 顺便说一句,你也可以在纯SQL-PL或PL / SQL中做到这一点,如果你可以联合两个数据库(我没有理由不这样做)