ORACLE比较两个数据库的表结构
create table ESPACE_TABLE
(
TABLE_NAME VARCHAR2(100) not null
)
create table ESPACE_COLUMN
(
TABLE_NAME VARCHAR2(100) not null,
COLUMN_NAME VARCHAR2(100) not null
)
create table UC_TABLE_DIFFERENT
(
S_TABLE_NAME VARCHAR2(30),
B_TABLE_NAME VARCHAR2(30),
S_COLUMN_NAME VARCHAR2(30),
B_COLUMN_NAME VARCHAR2(30),
S_DATA_TYPE VARCHAR2(106),
B_DATA_TYPE VARCHAR2(106),
S_DATA_LENGTH NUMBER,
B_DATA_LENGTH NUMBER,
S_DATA_PRECISION NUMBER,
B_DATA_PRECISION NUMBER,
S_DATA_SCALE NUMBER,
B_DATA_SCALE NUMBER,
S_NULLABLE VARCHAR2(1),
B_NULLABLE VARCHAR2(1),
S_DATA_DEFAULT VARCHAR2(4000),
B_DATA_DEFAULT VARCHAR2(4000)
)
create table SDU_TABLES
(
TABLE_NAME VARCHAR2(30) not null,
COLUMN_NAME VARCHAR2(30) not null,
DATA_TYPE VARCHAR2(106),
DATA_LENGTH NUMBER not null,
DATA_PRECISION NUMBER,
DATA_SCALE NUMBER,
NULLABLE VARCHAR2(1),
DATA_DEFAULT VARCHAR2(4000)
)
create table bmp_tables
(
TABLE_NAME VARCHAR2(30) not null,
COLUMN_NAME VARCHAR2(30) not null,
DATA_TYPE VARCHAR2(106),
DATA_LENGTH NUMBER not null,
DATA_PRECISION NUMBER,
DATA_SCALE NUMBER,
NULLABLE VARCHAR2(1),
DATA_DEFAULT VARCHAR2(4000)
)
create table UC_TABLE_DIFFERENT
(
S_TABLE_NAME VARCHAR2(30),
B_TABLE_NAME VARCHAR2(30),
S_COLUMN_NAME VARCHAR2(30),
B_COLUMN_NAME VARCHAR2(30),
S_DATA_TYPE VARCHAR2(106),
B_DATA_TYPE VARCHAR2(106),
S_DATA_LENGTH NUMBER,
B_DATA_LENGTH NUMBER,
S_DATA_PRECISION NUMBER,
B_DATA_PRECISION NUMBER,
S_DATA_SCALE NUMBER,
B_DATA_SCALE NUMBER,
S_NULLABLE VARCHAR2(1),
B_NULLABLE VARCHAR2(1),
S_DATA_DEFAULT VARCHAR2(4000),
B_DATA_DEFAULT VARCHAR2(4000)
)
CREATE OR REPLACE PROCEDURE COMPARE_UC_TABLES
AS
BEGIN
execute immediate 'delete from sdu_tables';
execute immediate 'delete from bmp_tables';
execute immediate 'delete from uc_table_different';
execute immediate 'insert into sdu_tables select
A.Table_Name,
A.column_name ,A.data_type ,A.data_length ,A.data_precision ,
A.Data_Scale ,A.nullable ,''
from
dba_tab_columns A
where
A.owner=''表1'' and SUBSTR(TABLE_NAME,1,4) != ''BIN$''';
execute immediate 'insert into bmp_tables select
A.Table_Name,
A.column_name ,A.data_type ,A.data_length ,A.data_precision ,
A.Data_Scale ,A.nullable ,''
from
dba_tab_columns A
where
A.owner=''表2'' and SUBSTR(TABLE_NAME,1,4) != ''BIN$''';
DELETE FROM sdu_tables WHERE TABLE_NAME IN (SELECT TABLE_NAME FROM ESPACE_TABLE);
DELETE FROM bmp_tables WHERE TABLE_NAME IN (SELECT TABLE_NAME FROM ESPACE_TABLE);
DELETE FROM sdu_tables S WHERE EXISTS (SELECT 1 FROM ESPACE_COLUMN E WHERE E.TABLE_NAME = S.TABLE_NAME AND E.COLUMN_NAME = S.COLUMN_NAME);
DELETE FROM bmp_tables B WHERE EXISTS (SELECT 1 FROM ESPACE_COLUMN E WHERE E.TABLE_NAME = B.TABLE_NAME AND E.COLUMN_NAME = B.COLUMN_NAME);
commit;
execute immediate 'insert into uc_table_different select *
from (select s.Table_Name s_Table_Name,
b.Table_Name b_Table_Name,
s.column_name s_column_name,
b.column_name b_column_name,
s.data_type s_data_type,
b.data_type b_data_type,
s.data_length s_data_length,
b.data_length b_data_length,
s.data_precision s_data_precision,
b.data_precision b_data_precision,
s.Data_Scale s_Data_Scale,
b.Data_Scale b_Data_Scale,
s.nullable s_nullable,
b.nullable b_nullable,
s.Data_default s_Data_default,
b.Data_default b_Data_default
from sdu_tables s
full join bmp_tables b on s.Table_Name = b.Table_Name
and s.column_name = b.column_name)
where s_column_name is null
or b_column_name is null
or s_data_type != b_data_type
or s_data_length != b_data_length
or s_data_precision != b_data_precision
or s_Data_Scale != b_Data_Scale
or s_nullable != b_nullable
or s_Data_default != b_Data_default';
commit;
END COMPARE_UC_TABLES;
select * from uc_table_different where ((s_table_name not like 'TQH_%' AND B_table_name NOT LIKE 'TQH_%')
AND (s_table_name not like 'TQBP_%' AND B_table_name NOT LIKE 'TQBP_%')
AND (s_table_name not like 'TQSIMP_%' AND B_table_name NOT LIKE 'TQSIMP_%')
AND (s_table_name not like 'TQSP_%' AND B_table_name NOT LIKE 'TQSP_%')
AND (s_table_name not like 'TQTP_%' AND B_table_name NOT LIKE 'TQTP_%')
AND (s_table_name not like 'TQP_%' AND B_table_name NOT LIKE 'TQP_%')
AND (s_table_name not like 'TQPH_%' AND B_table_name NOT LIKE 'TQPH_%')
AND (s_table_name not like 'TQPBP_%' AND B_table_name NOT LIKE 'TQPBP_%') ) OR
( s_table_name IS NULL AND B_table_name NOT LIKE 'TQH_%'
AND B_table_name NOT LIKE 'TQBP_%' AND B_table_name NOT LIKE 'TQSIMP_%'
AND B_table_name NOT LIKE 'TQSP_%'
AND B_table_name NOT LIKE 'TQTP_%'
AND B_table_name NOT LIKE 'TQP_%'
AND B_table_name NOT LIKE 'TQPH_%'
AND B_table_name NOT LIKE 'TQPBP_%'
)
ORACLE比较两个数据库的表结构的更多相关文章
- 使用Python比较MySQL数据库中两个数据库的表结构--转载
https://blog.csdn.net/tenaguan4461/article/details/82286781 https://www.jianshu.com/p/b3dac5a3479a
- 在Oracle 11.2的数据库中建表时遇到 RESULT_CACHE (MODE DEFAULT) ORA-00922: missing or invalid option
在Oracle 11.2的数据库中建表时遇到 RESULT_CACHE (MODE DEFAULT) ORA-00922: missing or invalid option hostdr:[/ho ...
- MySQL 对比数据库的表结构
有时候,需要对比一下测试环境和生产环境中,数据库的表结构是否有所差异.有两个常用的工具. AmpNmp.DatabaseCompare GUI 界面,支持多种数据库(MySQL.SQL Server. ...
- 通过EA导入数据库存在表结构并生成文档
通过EA导入数据库存在表结构并生成文档 慕课网,程序员升职加薪神器,点击免费学习 目录[-] 导入数据源,表结构 生成表结构的文档 Enterprise Architect 是超级强大项目管理功能 ...
- 导入导出Mysql数据库、表结构、表数据
由sql文件导入 mysql -uusername -ppwd < ./abc.sql 导出整个数据库的表结构 mysqldump -uroot -pdbpasswd -d dbname > ...
- 07_MySQL修改数据库的表结构
修改数据库的表结构
- ORACLE数据库对比表结构
有时候会有某种需求:需要对比两个表的表结构是否一致,有时候甚至是整个数据库所有表的表结构对比.......表结构对比无非就是字段名.字段类型.字段数据类型.以及字段的顺序的对比.如果需要对比表结构,可 ...
- 导出db2数据库的表结构和数据(转载)
对于db2数据库,导入和导出表结构和数据其实很简单,只需要用到db2look和db2move两个命令即可.这两个命令都需要在客户端的命令行处理器 中执行,但对于数据库服务器和客户端不在同一机器上的 ...
- 【Oracle】【2】复制表结构及其数据
--复制表结构及其数据 create table table_name_new as select * from table_name_old; --只复制表结构 ; --create table t ...
随机推荐
- ResultSetMetaData和ResultSet
我现在有一张表t_product;我们查询所有的商品:SELECT * FROM t_product; 上述所有的数据都可以封装成一个对象,我们称这个查询出来的对象为结果集对象:ResultSet. ...
- PCL 不同类型的点云之间进行类型转换
PCL 不同类型的点云之间进行类型转换 可以使用PCL里面现成的函数pcl::copyPointCloud(): #include <pcl/common/impl/io.h> pcl:: ...
- 15、Linux 文件属性和测试( chgrp,chown,chmod和-e -f -d -s
一.更改文件属性 1.chgrp:更改文件属组 语法: chgrp [-R] 属组名文件名 参数选项 -R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件 ...
- 18.phpmyadmin 4.8.1 远程文件包含漏洞(CVE-2018-12613)
phpmyadmin 4.8.1 远程文件包含漏洞(CVE-2018-12613) phpMyAdmin是一套开源的.基于Web的MySQL数据库管理工具.其index.php中存在一处文件包含逻辑, ...
- HTML5秘籍(第2版) 中文pdf扫描版
HTML5秘籍(第2版)共包括四个部分,共13章.第一部分介绍了HTML5的发展历程,用语义元素构造网页,编写更有意义的标记,以及构建更好的Web表单.第二部分介绍了HTML5中的音频与视频.CS ...
- C# 写 LeetCode easy #27 Remove Element
27. Remove Element Given an array nums and a value val, remove all instances of that value in-place ...
- C 语言实例 - 实现简单的计算器
C 语言实例 - 实现简单的计算器 实现加减乘除计算. 实例 # include <stdio.h> int main() { char operator; double firstNum ...
- HDU2066-一个人的旅行
题目链接:点击打开链接 Problem Description 虽然草儿是个路痴(就是在杭电待了一年多,居然还会在校园里迷路的人,汗~),但是草儿仍然很喜欢旅行,因为在旅途中 会遇见很多人(白马王子, ...
- php静态方法和属性
静态方法和属性由static关键字定义 静态方法和属性不用实例化也可以直接访问,如 self::test(),self::tt 类实例化后可以访问静态方法,但是不可以访问静态属性 声明类属性或方法为静 ...
- Codeforces 1161C(博弈)
自己的一点想法 举几个例子后发现是谁先手痒痒把某一堆掏空了那他就GG了,因此要尽量让对方不得不掏空某堆. 用最简单的举例后发现:1 1 1 1 1 1,扔给谁谁完蛋:1 1 1 1 1 2,一样的,肯 ...