我有一个要求,我希望在DB2中不同数据库中的表之间协调数据,并将差异作为报告放在java中。
我想到的方法是:
还有其他有效的方法可以通过java和sql来完成吗?
这些表将包含大约10到15列和大约20000行数据。
我的方法是否正确?
P.S。:不允许将一个表联合到另一个数据库等的事情。
答案 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中做到这一点,如果你可以联合两个数据库(我没有理由不这样做)