第1个回答 2015-12-22
1、先确定表结构是否相同
这个查看通过数据字典就可以实现
oracle中表的数据字典是:all_tables
字段的数据字典是:all_tab_cols
select count(*) from
(select column_name,data_type,data_length
from all_tab_cols
where table_name = 'tab1'
minus
select column_name,data_type,data_length
from all_tab_cols
where table_name = 'tab2');
如果结果是0,则说明两个表结构相同
2、对比记录是否完全一致
select count(*) from
(select * from tab1
minus
select * from tab2);
如果结果是0,说明两个表大致相同。
这个例子只是对比了字段类型,长度,还有其他好多因素没对比(比如字段是否允许为空,是否有约束,表是否有触发器等等)。但我们通常意义上的相同比这两项就够了。其实两个表不可能完全相同,一个数据库中不可能出现完全相同的两个表
第2个回答 2015-12-03
最简单的两个db的表做minus。
将数据按照固定顺序spool出来,然后对spool出来的数据做diff。
两个表 A 和 表B,表结构一样,那么
select * from A
minus
select * from B
有结果出来,说明两个表的数据就不一样。
你现在是两个DB,那么从其中一个建一个database link 连接到另外一个上面就行了。
第3个回答 2007-10-27
select * from [TABLE1]
WHERE NOT EXISTS(select * from [TABLE2])
UNION ALL
select * from[TABLE2]
WHERE NOT EXISTS(select * from [TABLE1])
如果返回记录为空就是完全相同,
当然还要排除两个表都为空的情况
第4个回答 2007-10-26
先select count(*) from table两个表都这样,比较一下记录数
然后select table1.字段1,table1.字段2,table1.字段3 from table1,table2 where table1.字段1=table2.字段1 and table1.字段2=table2.字段2 and table1.字段3=table2.字段3
字段数量可以添加