暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

对比两个表的表结构是否一致

原创 不吃草的牛_Nick 2022-08-19
1222

表结构对比无非就是字段名、字段类型、字段数据类型、以及字段的顺序的对比。如果需要对比表结构,可以通过下面简单的脚本实现:

select m.owner,
m.table_name,
m.column_id,
m.column_name,
m.data_type,
m.data_length,
n.owner,
n.table_name,
n.column_id,
n.column_name,
n.data_type,
n.data_length
from (select owner,
table_name,
column_id,
column_name,
data_type,
data_length
from dba_tab_columns
where owner = upper('&owner_a')
and table_name = upper('&table_name_a')) m
left join (select owner,
table_name,
column_id,
column_name,
data_type,
data_length
from dba_tab_columns
where owner = upper('&owner_b')
and table_name = upper('&table_name_b')) n
on m.column_id = n.column_id
and m.column_name = n.column_name
and m.data_type = n.data_type
and m.data_length = n.data_length
order by m.table_name, m.column_id;


但是如果A表与B表前面的字段一致,然而B表有一些额外的字段,那么上面的SQL(左连接)就会查不出两者之间结构的不同。此时需要使用右连接才能对比出真正的表结构。所以如果需要对比两者的表结构是否一致,最好左连接查一次,右连接查一次。才能真正的确认两者的表结构的异同。
select m.owner,
m.table_name,
m.column_id,
m.column_name,
m.data_type,
m.data_length,
n.owner,
n.table_name,
n.column_id,
n.column_name,
n.data_type,
n.data_length
from (select owner,
table_name,
column_id,
column_name,
data_type,
data_length
from dba_tab_columns
where owner = upper('&owner_a')
and table_name = upper('&table_name_a')) m
right join (select owner,
table_name,
column_id,
column_name,
data_type,
data_length
from dba_tab_columns
where owner = upper('&owner_b')
and table_name = upper('&table_name_b')) n
on m.column_id = n.column_id
and m.column_name = n.column_name
and m.data_type = n.data_type
and m.data_length = n.data_length
order by m.table_name, m.column_id;


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论