前言
达梦这个数据库恐怕让很多人又爱又恨吧,爱的是LD行业都用它、你不得不去熟悉他它,毕竟这是国产的数据库么不是。恨的是很多时候它真的很不好用,而网上你能找到的关于它的介绍是少之又少,就算有,可能还是错的。我开这个帖子,主要是为了自己方便,记录一下遇到的达梦问题。
需求一 如何不通过迁移工具快速复制一个数据库内的两个模式Schema
问题描述
我想在一台达梦7同一个数据库上,复制一个用户的默认schema下面的所有表。但是我使用迁移工具总是不成功,于是我思考还有什么方法解决这个问题。
解决步骤
-
我用DB管理员账户来新建一个用户,这样这个用户会默认创建一个同名的schema
-
我用DB管理员账户给这个schema赋予源数据的访问权限
-
我登录这个新用户,再通过运行形如下面的命令就可以将表一个个重建了
create table 新模式名.表名 as select * from 老模式名.表名;
关键技巧
生成这个命令,我用的是chatgpt,先获取当前schema所有的表名,再复制一下
SELECT TABLE_NAME FROM USER_TABLES;
然后复制成一行一个表名的文本形式,放到chatgpt中,跟他说
请将这个列表
TABLE_A
TABLE_B
TABLE_C
里的每一行都替换这个句子中的X,并最后输出替换完毕的所有句子
create table 新模式名.X as select * from 老模式名.X
输出时,不需要有每行的行号 每行最后加个分号结束
这样就得到了完美的结果,形如下列
create table 新模式名.TABLE_A as select * from 老模式名.TABLE_A;
create table 新模式名.TABLE_B as select * from 老模式名.TABLE_B;
create table 新模式名.TABLE_C as select * from 老模式名.TABLE_C;