遷移oracle表註釋列註釋到mysql
阿新 • • 發佈:2019-02-19
本文註釋遷移的前提是表結構已遷移完成,步驟總結如下:
注: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關聯並建立包含表名、欄位名、欄位型別及註釋的表:
SELECT 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關鍵字。