您的当前位置:首页ORACLE数据库对比表结构

ORACLE数据库对比表结构

2023-11-09 来源:哗拓教育

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=&OWNER_A
  AND TABLE_NAME=&TABLE_NAME_A
) M LEFT JOIN
(
SELECT OWNER
      ,TABLE_NAME
      ,COLUMN_ID
      ,COLUMN_NAME
      ,DATA_TYPE
      ,DATA_LENGTH
FROM DBA_TAB_COLUMNS
WHERE OWNER=&OWNER_B
  AND TABLE_NAME=&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=&OWNER_A
  AND TABLE_NAME=&TABLE_NAME_A
) M RIGHT JOIN
(
SELECT OWNER
      ,TABLE_NAME
      ,COLUMN_ID
      ,COLUMN_NAME
      ,DATA_TYPE
      ,DATA_LENGTH
FROM DBA_TAB_COLUMNS
WHERE OWNER=&OWNER_B
  AND TABLE_NAME=&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;

ORACLE数据库对比表结构

标签:

小编还为您整理了以下内容,可能对您也有帮助:

我想比较两个oracle数据库表结构的差异,有现成的工具或脚本吗

有的事,很多编程工具中打开数据库表都可以比较的。
也可以在oracle的管理控制台中打开两个表比较,也很直观。

我想比较两个oracle数据库表结构的差异,有现成的工具或脚本吗

有的事,很多编程工具中打开数据库表都可以比较的。
也可以在oracle的管理控制台中打开两个表比较,也很直观。

oracle比较两个用户下的表,表结构,表数据

比较表结构:desc tab

比较表数据:select * from tab;

不同表占用空间比较:查询视图 dba_segments追问不好意思啊,你貌似把我看成高手了,这样的答案我实在是没法理解

如何查看oracle 两个表结构是否相同

在工作中需要完成这么一个需求:比较两个表的表结构是否形相同,并找出差异.比较两个表中的数据是否相同,并找出差异数据?

分析:由于表结构中字段比较多,手工比较很浪费时间,而且不能保证不出错误.对于表中的数据那就能多了,更不能靠这种方式比较.

为了思考问题简单和方便测试,首先先建立两个测试表,并插入一些测试数据吧,sql如下:

http://www.cnblogs.com/fangmin/p/4320917.html

显示全文