日期:2014-05-17  浏览次数:20830 次

找两张表中列有哪些不同(两个数据库的同一张表)
现在遇到这样一个问题:两个数据库,数据库A和B,一个用于正式用,一个测试用,现在A和B中有同样一张表tab,本来这两个库的表tab字段一样,但由于正在开发阶段,所以在B库中表tab增加了好多字段,现在导致两个表的字段不一样了,有没有语句将这两个库的同一张表不一样的字段列出来呢?高手指点

------解决方案--------------------
建立DBLINK
select a.column_name from user_tab_columns a where a.table_name= 'A ' and not exists
(select 1 from user_tab_columns@dblinkA where a.column_name=b.column_name
and b.table_name= 'A ")
------解决方案--------------------
分别查出比原库多出来的列和少了的列然后再连接
建立DBLINK
select a.column_name, 'a ' from user_tab_columns a where a.table_name= 'A ' and not exists
(select 1 from user_tab_columns@dblinkA where a.column_name=b.column_name
and b.table_name= 'A ")
union all
select a.column_name, 'b ' from user_tab_columns@dblinkA a where a.table_name= 'A ' and not exists
(select 1 from user_tab_columns where a.column_name=b.column_name
and b.table_name= 'A ")

------解决方案--------------------
1.在其中一个库中建立链接数据库指向另一个
2.查询
select a.column_name, 'a ' from user_tab_columns a where a.table_name= 'A ' and not exists
(select 1 from user_tab_columns@dblinkA where a.column_name=b.column_name
and b.table_name= 'A ")
union all
select a.column_name, 'b ' from user_tab_columns@dblinkA a where a.table_name= 'A ' and not exists
(select 1 from user_tab_columns where a.column_name=b.column_name
and b.table_name= 'A ")