比较2个模式中的一个表以查找缺少的列

时间:2013-05-14 13:41:21

标签: oracle

我做了我的研究;我找不到与我的问题类似的东西。如果我的问题重复,请原谅我,因为我没有在我的研究中找到。

我有2个架构,schema1和schema2,它们都有相同的6个表。

但并非每个表在架构中都有相同的列。

Exp:tab1在schema1中有40列,但是tab1在schema 2中有38列。因此我想要添加2个缺少的列。我需要插入数据。

我可以手动插入它们但是我需要时间,是不是有简单的查询?

在我的研究中,我找到了有助于此的工具。感谢

2 个答案:

答案 0 :(得分:1)

以下将显示schema1中schema2中不存在的列。

SELECT table_name, column_name, data_type, data_length
  FROM all_tab_columns
 WHERE owner = 'schema1'
MINUS
SELECT table_name, column_name, data_type, data_length
  FROM all_tab_columns
 WHERE owner = 'schema2'

我编辑了上述内容,以包含Alex的建议,以便在输出中包含数据类型和长度。

答案 1 :(得分:0)

如果您希望从侧面看到差异,请使用full outer join

select      a.table_name , a.column_name , a.data_type , a.data_length , 
            b.table_name , b.column_name , b.data_type , b.data_length
from        all_tab_columns a full outer join all_tab_columns b 
on          (a.column_name = b.column_name)
where       a.owner = 'OWNER_A'
and         a.table_name = 'TABLE_A'
and         b.owner = 'OWNER_B'
and         b.table_name = 'TABLE_B'