0

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

我有 2 个模式,模式 1 和模式 2,它们都有相同的 6 个表。

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

Exp:tab1 在 schema1 中有 40 列,但 tab1 在 schema 2 中有 38 列。所以我想添加 2 个缺失的列。我需要插入一些数据。

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

在我的研究中,我发现了对此有所帮助的工具。谢谢

4

2 回答 2

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 的建议,以在输出中包含数据类型和长度。

于 2013-05-14T13:57:01.477 回答
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'
于 2013-05-14T15:47:26.813 回答