本文注释迁移的前提是表结构已迁移完成,步骤总结如下:
注:oracle库中有很多BIN$开头的表,是由于回收站中的表没有清空,
删除oracle中回收站中的表
select * from recyclebin where type='TABLE';
PURGE RECYCLEBIN
select * from user_tab_comments -- 获取表注释,查询结果只有table_name,table_type,comments
select * from user_col_comments -- 获取字段注释,查询结果只有table_name,column_name,comments
2.通过工具(我采用navicate)将上面获取的表存储在mysql中的新建表tab_comments和comments
新建tab_comments表,列名为table_name,table_type,comments,
新建comments表,列名为table_name,column_name,comments,将1中结果粘贴到这两个表中,保存。
3.-- 获取生成 表 注释的sql语句
SELECT CONCAT('ALTER TABLE ',table_name,' COMMENT= ','\'',comments,'\'',';') AS statements
FROM tab_comments
WHERE comments IS NOT NULL
新建查询窗口,粘贴进去执行。
4.在mysql中,将comment与information_schema.columns关联并创建包含表名、字段名、字段类型及注释的表:
CREATE TABLE col_commentSELECT a.table_name,a.column_name,column_type,a.comments
FROM comments AS a,
(SELECT table_name,column_name,column_type
FROM information_schema.columns
WHERE table_schema='gsggws'
ORDER BY table_schema,table_name ) AS b
WHERE LOWER(CONCAT('ggws_',a.table_name))=b.table_name AND a.column_name=b.column_name AND a.comments IS NOT NULL
由于迁移时,表明添加了前缀,所以做大小写和前缀转换进行联接。
5.在mysql中生成语句-- 获取生成 字段注释 的sql语句
SELECT CONCAT('ALTER TABLE ggws_',LOWER(table_name),' MODIFY COLUMN ',column_name,' ',column_type,' COMMENT ','\'',comments,'\'',';') AS statements
FROM col_comment
新建查询窗口,粘贴进去执行。
小意外: usage 为列名的表添加注释失败,因为usage为mysql关键字。