我做了我的研究;我没有找到与我的问题类似的东西。如果我的问题是重复的,请原谅我,因为我没有在我的研究中找到。
我有 2 个模式,模式 1 和模式 2,它们都有相同的 6 个表。
但并非每个表在架构中都有相同的列。
Exp:tab1 在 schema1 中有 40 列,但 tab1 在 schema 2 中有 38 列。所以我想添加 2 个缺失的列。我需要插入一些数据。
我可以手动插入它们,但这需要我一些时间,不是有一个简单的查询吗?
在我的研究中,我发现了对此有所帮助的工具。谢谢
我做了我的研究;我没有找到与我的问题类似的东西。如果我的问题是重复的,请原谅我,因为我没有在我的研究中找到。
我有 2 个模式,模式 1 和模式 2,它们都有相同的 6 个表。
但并非每个表在架构中都有相同的列。
Exp:tab1 在 schema1 中有 40 列,但 tab1 在 schema 2 中有 38 列。所以我想添加 2 个缺失的列。我需要插入一些数据。
我可以手动插入它们,但这需要我一些时间,不是有一个简单的查询吗?
在我的研究中,我发现了对此有所帮助的工具。谢谢
下面将显示 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 的建议,以在输出中包含数据类型和长度。
如果您想查看侧面的差异,请使用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'