高级DBA带你学习达梦8国产数据库不同模式之间同步表结构方法及其工具使用方法实战

达梦8国产数据库不同模式之间同步表结构方法实战

一、场景说明

笔者用的是达梦版本是达梦8!
不同用户,不同模式之间表结构同步举例模式A某些表建表批量迁移到模式B!
传统方法
X数据库A模式导出某些表建表语句然后去D数据库B模式还原,导出的DUMP发现还是存在绑死模式,导致执行过程中导入导出失败!

A模式 导出命令

dexp 数据库用户名/数据库密码@localhost:5236 file=备份文件名称.dmp directory=E:// ROWS=N TABLES=模式1.表名1,模式1.表名2  

B模式导入命令

dimp 数据库用户名/数据库密码@localhost:5236 file=还原文件名称.dmp directory=E://  SCHEMAS=模式B

这种命令方式如果是模式名称一致就没有问题,但是如果是模式名称不一样,导入会失败!

这种默认导出模式也没有drop table的语句!不方便!

这次笔者用在这里插入图片描述
这个工具临时解决一下!以后碰到更好的方法再分享!
用这个工具一个表一个表导出也可以是可以的,但是我这次需要同步几百张,一个一个弄太慢了!

二、解决方法

将需要同步的表集合导入到一个表里面!

CREATE TABLE STANDARD_TABLE (
	ID INT NOT NULL AUTO_INCREMENT,
	TABLE_NAME VARCHAR(100) NULL,
	CONSTRAINT CONS134221575 PRIMARY KEY (ID)
);

然后把同步表名插入到这个表
写一个自定义函数

CREATE OR REPLACE FUNCTION get_create_table_statement(table_name VARCHAR(255))
RETURN VARCHAR(4000) AS
    v_create_table_statement VARCHAR(4000);
BEGIN
    v_create_table_statement := 'DROP TABLE IF EXISTS ' || table_name || ';' || DBMS_METADATA.GET_DDL('TABLE',table_name);
    -- 使用 REPLACE 函数将模式名称替换为空字符串
    RETURN v_create_table_statement;
END;
 SELECT get_create_table_statement('表名');

查询结果如下:

DROP TABLE IF EXISTS STANDARD_TABLE;CREATE TABLE "模式名称"."STANDARD_TABLE"
(
"ID" INT AUTO_INCREMENT NOT NULL,
"FORMAL_TABLE_NAME" VARCHAR(100) NOT NULL
NOT CLUSTER PRIMARY KEY("ID")) STORAGE(ON "MAIN", CLUSTERBTR) AUTO_INCREMENT = 1;

其实就是把几百个表的或者某些表拼接成我们常用的建表脚本!

在这里插入图片描述

然后用在这里插入图片描述导出建表语句的结果。替换一下模式的名称!

select get_create_table_statement(upper(TABLE_NAME)) from STANDARD_TABLE 

得到A模式表集合得建表语句集合

然后导出结果到.sql文件

然后复制内容到
e
然后去B模式执行即可,或者用达梦批量执行.sql语句批量执行也可以!

导出查询结果方法

在这里插入图片描述
在这里插入图片描述

也可以把鼠标移到表格处,然后全选复制,然后再复制处理也可以!

按表数据导出然后再导入(某个表A模式导出表,再导入B模式)

表的导出insert语句方法
在这里插入图片描述

选择表右键导出insert语句

在这里插入图片描述
导出的内容里面也是包含模式名称的,如果模式不一样,还得替换,很麻烦!
上面是导出,这个是导入!
批量执行SQL文件,用达梦自带的,
在这里插入图片描述

在这里插入图片描述

这些方法是笔者亲自试过的,是好使的!

三、用DBeaver操作达梦数据库方法

在实际开发过程中,数据库查询工具尤其重要,本文详细介绍一款轻量级好用的数据库查询工具来查询达梦8数据库。DBeaver工具非常好用,也可以用于连接MYSQL!

一、DBeaver工具的下载

https://dbeaver.io/download/     #官网下载地址

在这里插入图片描述

二、设置自定义驱动

在这里插入图片描述
1、单击驱动管理器
在这里插入图片描述
在这里插入图片描述
2、按我的截图输入配置

dm.jdbc.driver.DmDriver    #类名:
jdbc:dm://{host}:{port}?schema={database}    #URL模板
5236    SYSDBA

3、引入JDBC驱动包(达梦JDBC驱动包需要去我的下载资料下载)

在这里插入图片描述

https://download.csdn.net/download/nasen512/86541002?spm=1001.2014.3001.5503  #下载驱动包下载

4、下载完成之后依次添加这3个驱动包
在这里插入图片描述
在这里插入图片描述
5、配置达梦连接测试

在这里插入图片描述
在这里插入图片描述
选择模式》》然后单击SQL编辑器

在这里插入图片描述
下面编辑框查询SQL即可

笔者简介
国内某一线知名软件公司企业认证在职员工:任JAVA高级研发工程师,大数据领域专家,数据库领域专家兼任高级DBA!10年软件开发经验!现任国内某大型软件公司大数据研发工程师、MySQL数据库DBA,软件架构师。直接参与设计国家级亿级别大数据项目!并维护真实企业级生产数据库300余个!紧急处理数据库生产事故上百起,挽回数据丢失所造成的灾难损失不计其数!并为某国家级大数据系统的技术方案(国家知识产权局颁布)专利权的第一专利发明人!

在这里插入图片描述

在这里插入图片描述

  • 15
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术很渣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值