具有不同表结构的两个DB2表中的数据值之间的差异

问题描述 投票:0回答:1

我在主机'old'和'new'上有两个db2表。这些表目前有10亿条记录,目前有70-80列。这些表从两个不同的系统中填充,因此表结构不相同,即列中存在一些差异,两个表共享一些必须针对不同数据值进行比较的公共列。例如 :

OLD
id A B C  
1  x y z
1  x y z
3  m n o
4  e f g

NEW
id B C D E 
1  y a a b
1  y a a b
2  n o c d
4  g g l m

因此,在上面的示例中,'old'和'new'具有必须比较差异的列B和C,并且在公共列中具有不同值的行必须写入具有所有公共列的另一个表。

我确实读过可以使用的except&union函数,但是这些额外的约束(表结构的差异,而不是所有的ID都按顺序存在)使查询过于复杂。

有没有更简单的方法来做到这一点?我无法在大型机上安装任何软件/第三方工具。请帮忙。

谢谢。

sql database db2 mainframe
1个回答
0
投票

这是我如何比较表的通用。

How to retrieve only those rows of a table (db1) which are not in another table (db2)

修改为仅使用两列。

SELECT 'AFTER', A.* FROM      
(SELECT b,c FROM &AFTER         
EXCEPT                        
 SELECT b,c FROM &BEFORE) AS A  
UNION                         
SELECT 'BEFORE', B.* FROM     
(SELECT b,c FROM &BEFORE        
EXCEPT                        
 SELECT b,c FROM &AFTER) AS B 

如果需要保存结果,请在create table语句中包含上述内容。

© www.soinside.com 2019 - 2024. All rights reserved.