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 ...
随机推荐
- linux日常管理-rsync后台服务方式-1
rsync的另外一种方式,写一个配置文件,放在etc下,通过一个命令启动他,它会监听一个端口,在客户端和服务端进行通信. 远程机器的配置文件 IP是192.168.1.117 配置文件的名字,写成这个 ...
- RubyGems 镜像 - 淘宝网
为什么有这个? 由于国内网络原因(你懂的),导致 rubygems.org 存放在 Amazon S3 上面的资源文件间歇性连接失败.所以你会与遇到 gem install rack 或 bundle ...
- Jmeter测试接口简单使用教程
1. 打开 解决 apache-jmeter-2.13 然后进解压后的然后点击bin 文件里面的jmeter.bat 打开jmeter 2. 添加测试组件 1:添 ...
- mysql修改查询出来的时间格式
var d = new Date(rss.createtime); let youWant = d.getFullYear() + ) + '-' + d.getDate() + ' ' + d.ge ...
- 用 R 画中国分省市地图
用 R 画中国分省市地图 (2010-11-18 16:25:34) 转载▼ 标签: 中国地图 营销 杂谈 分类: 数据分析 用R 也可以做出漂亮的依参数变化的中国地图. 主要参考(http://co ...
- 15. CTF综合靶机渗透(八)
VM Name: BlackMarket VM Description: BlackMarket VM presented at Brisbane SecTalks BNE0x1B (28th Ses ...
- java多线程系列:ThreadPoolExecutor源码分析
前言 这篇主要讲述ThreadPoolExecutor的源码分析,贯穿类的创建.任务的添加到线程池的关闭整个流程,让你知其然所以然.希望你可以通过本篇博文知道ThreadPoolExecutor是怎么 ...
- Django 之 auth 模块
Django 内置一个 auth 模块,帮助用户实现注册.登录.注销以及修改密码等功能,帮助开发者省去了很多功夫. auth 模块 在创建模型时,Django内部会生成一个名为 auth_user 的 ...
- 线程池和Thread
1.线程池 创建线程需要时间.如果有不同的短任务要完成,就可以事先创建许多线程,在应完成这些任务时发出请求.这个线程数最好在需要更多线程时增加,在需要释放资源时减少.不需要自己创建这样一个列表.该列表 ...
- Enigma模拟-Python
设计思想 Enigma机的机械结构: 键盘:加密人员通过键盘进行输入 转子:Enigma机上一般装有至少3个转轮.每个转轮有代表26个字母的触头和触点,触点和触头在转轮内部有导线相连(一个转轮相当于一 ...