达梦数据库迁移到MySQL字段注释缺失问题处理

目录

1、环境信息

2、问题详情

3、处理方案

3.1、提取备用库字段注释

3.2、生成正式库字段注释


1、环境信息

达梦数据库版本:v8

MySQL数据库版本:5.7.11

正式库:通过DTS迁移后的MySQL数据库

备用库:表结构与正式库一致,用于生成字段注释的SQL语句

2、问题详情

利用达梦数据库自带的数据迁移工具(DTS),从达梦数据库迁移表到MySQL数据库,迁移完成后发现表和字段注释缺失。

3、处理方案

3.1、提取备用库字段注释

达梦数据库导出时是和创建表和索引在一起,因此需要单独把字段注释提取出来,利用notepad++进行提取注释的操作。

(1)Ctrl+F选择Mark,标记需要截取的行

(2) 依次点击 菜单栏的【Search】—>【Bookmark】—>【Copy Bookmarked Lines】
打开一个文档复制进去就行了。这样就把达梦数据库表中的所有注释给提取出来了。 

(3)修改成MySQL的修改字段注释的语法格式

 

修改后的符合MySQL的语法格式如下:

(4)MySQL创建一个和正式库表结构一样的库,也就是备用库,并执行上边生成的SQL语句。

注意:一定是在【备用库】中执行的,这个库用完是要删除的。

3.2、生成正式库字段注释

(1)利用Mysql的表 information_schema.COLUMNS 进行数据的拼接

--  查出备用库表的数据(这个是有注释的喔)
DROP TABLE IF EXISTS temp2;
CREATE TEMPORARY TABLE temp2 SELECT
TABLE_SCHEMA,
TABLE_NAME,
COLUMN_NAME,
COLUMN_COMMENT 
FROM
	information_schema.COLUMNS 
WHERE
	TABLE_SCHEMA = '备用库的名称' ;
	
--  查出正式库表的数据(正式库表没有注释)
DROP TABLE IF EXISTS temp1;
CREATE TEMPORARY TABLE temp1 SELECT
TABLE_SCHEMA,
TABLE_NAME,
COLUMN_NAME,
COLUMN_TYPE,
COLUMN_COMMENT 
FROM
	information_schema.COLUMNS 
WHERE
	TABLE_SCHEMA = '正式库的名称';
	
-- 将数据更新到临时表temp1中,这时 临时表temp1中就有了注释了
UPDATE temp1 t1,
temp2 t2 
SET t1.COLUMN_COMMENT = t2.COLUMN_COMMENT 
WHERE
	t1.TABLE_NAME = t2.TABLE_NAME 
	AND t1.COLUMN_NAME = t2.COLUMN_NAME;
	
--  拼接修改表中字段的SQL语句
SELECT
	'Alter table' , 
	t1.TABLE_NAME,
	'modify column',
	t1.COLUMN_NAME,
	t1.COLUMN_TYPE,
	'comment' ,
	"'",
	t1.COLUMN_COMMENT,
	"'",
	';'
FROM
	temp1 t1
INNER JOIN temp2 t2 on t1.TABLE_NAME = t2.TABLE_NAME and t1.COLUMN_NAME = t2.COLUMN_NAME
WHERE
	t1.COLUMN_COMMENT != '';

(2)生成修改正式库表的的字段注释的SQL语句

(3)复制出来的语句,放在正式库中执行就行了

(4)删除备用库【注意是备用库】