如何检查两个表作为对象在Oracle中是否相同?
我需要检查以下两个表的要点。
两个表都存在于同一模式中。
答案 0 :(得分:1)
您必须查询元数据的一种或另一种方式。您可以
或
另一个复杂性是分区表。您是否需要它们具有完全相同的分区才能“相同”?
即使在非常简单的情况下,也可能会有细微的细节。例如,您是否认为下面两个表“相同”?
create table t1 (id int, name varchar2(30), col int constraint chk_col check (col is not null));
create table t2 (id int, name varchar2(30), col int not null);
列元数据不同
SQL> select table_name, column_name, nullable
2 from user_tab_columns
3 where table_name in ('T1','T2');
TABLE_NAME COLUMN_NAM NULLABLE
---------- ---------- ----------
T1 ID Y
T1 NAME Y
T1 COL Y
T2 ID Y
T2 NAME Y
T2 COL N
6 rows selected.
因此,请尝试使此对帐工具尽可能简单。它可能具有3个输出,例如相同/不同/“需要手动比较”,因此您无需检查脚本中的每个细节。
PS。诸如Allround Automations PL / SQL开发人员之类的一些开发工具具有使用UI比较元数据的工具。