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

解决方案 »

  1.   

    建立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")
      

  2.   

    分别查出比原库多出来的列和少了的列然后再连接
    建立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")
      

  3.   

    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")
      

  4.   

    上面的方法不对吧,我是要比较两个表中有几个列不一样,按照上面的方法得不出结果.
    我就是要比较两个表中有哪些列不同,比如说表A比表B多了几列,或是表B比表A多了几列