使用minus对比两个数据库表列是否一致
-
在两个数据库分别建立一个表用来存放该数据库所有表字段数据
sql - 01
- 02
- 03
- 04
- 05
- 06
- 07
create table ALL_TABLE_COLUMN_NAME ( table_name VARCHAR2(100), column_name VARCHAR2(100), data_type VARCHAR2(100), data_length VARCHAR2(100) )
-
为两个数据中ALL_TABLE_COLUMN_NAME表填充数据
sql - 01
- 02
INSERT INTO all_table_column_name(TABLE_NAME,COLUMN_NAME,DATA_TYPE,DATA_LENGTH) select TABLE_NAME,COLUMN_NAME,DATA_TYPE,DATA_LENGTH from user_tab_columns;
-
创建dblink连接
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
CREATE PUBLIC DATABASE LINK "DATABASE_LINK_NAME" CONNECT TO "account" IDENTIFIED BY VALUES 'password' USING '(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = IP)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = orcl) ) )';
-
执行查询语句进行对比
sql - 01
- 02
- 03
select TABLE_NAME,COLUMN_NAME from all_table_column_name minus select TABLE_NAME,COLUMN_NAME from all_table_column_name@DATABASE_LINK_NAME;
minus指令是运用在两个 SQL 语句上。它先找出第一个 SQL 语句所产生的结果,然后看这些结果有没有在第二个 SQL 语句的结果中。如果有的话,那这一笔资料就被去除,而不会在最后的结果中出现。如果第二个 SQL 语句所产生的结果并没有存在于第一个 SQL 语句所产生的结果内,那这笔资料就被抛弃。简单的说就是以第一个查询的结果为基础对比第二个查询的结果,只记录第二个查询结果中缺少第一个查询的结果,不记录第二条查询结果比第一个查询。例:ABC--CDE=AB,CDE--ABC=DE