达梦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文件
然后复制内容到
然后去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余个!紧急处理数据库生产事故上百起,挽回数据丢失所造成的灾难损失不计其数!并为某国家级大数据系统的技术方案(国家知识产权局颁布)专利权的第一专利发明人!