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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了具有不同表结构的两个DB2表中的数据值之间的差异相关的知识,希望对你有一定的参考价值。

我在主机'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都按顺序存在)使查询过于复杂。

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

谢谢。

答案

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

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语句中包含上述内容。

以上是关于具有不同表结构的两个DB2表中的数据值之间的差异的主要内容,如果未能解决你的问题,请参考以下文章

显示来自两个不同表的两列之间的差异(比较表)

比较 2 个表中的值并生成具有差异的新表

Oracle - 两个表中两行之间的差异或变化

将 mySql 数据库表复制到另一个具有不同表结构的数据库表

如何使用 DB2 sql 检查不在两个表中的记录以获取另一个第三个表中的日期?

sql比对两个表中的差异数据比较的sql语句