1. 程式人生 > >遷移oracle表註釋列註釋到mysql

遷移oracle表註釋列註釋到mysql

本文註釋遷移的前提是表結構已遷移完成,步驟總結如下:

注:oracle庫中有很多BIN$開頭的表,是由於回收站中的表沒有清空,

刪除oracle中回收站中的表
select * from recyclebin where type='TABLE';
PURGE RECYCLEBIN

1.在oracle中查詢資料庫的所有表的表註釋和欄位註釋,程式碼如下:
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_comment
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關鍵字。