oracle diff:如何比较两个表?

Mar*_*son 30 oracle diff

假设我有两个表,t1和t2,它们的布局相同但可能包含不同的数据.

区分这两个表的最佳方法是什么?

L. *_*nda 55

试试这个:

(select * from T1 minus select * from T2) -- all rows that are in T1 but not in T2
union all
(select * from T2 minus select * from T1)  -- all rows that are in T2 but not in T1
;
Run Code Online (Sandbox Code Playgroud)

没有外部工具.没有性能问题union all.

  • 您的解决方案没有考虑 MINUS 删除重复记录的事实,您可以检查每个表上的 COUNT 来检查这一点。 (3认同)

max*_*yfc 13

您可以尝试使用set操作:MINUSINTERSECT

有关更多详细信息,请参见此处:http: //oreilly.com/catalog/mastorasql/chapter/ch07.html


Aar*_*lla 5

您可以使用AQT之类的工具在表之间创建差异.

另一种方法是将表转储到文本文件并使用像WinMerge这样的diff工具.使用此方法,您可以首先使用复杂的SQL将表转换为相同的布局.