iT邦幫忙

5

只談MySQL - MySQL Migration Toolkit (中)

昨天談到MySQL Migration Toolkit的反向工程的部份, 今天我們繼續討論下去...
在反向工程中, MySQL Migration Toolkit會檢查MS SQL Server 的物件, 然後進行分析, 如果一切OK, 系統會選取最適合的遷移方法, 在檢查昨天最後一頁圖示中的Log後, 按下[Next]

這一頁顯示Migration Toolkit在MS SQL Server的資料庫中找到多少可遷移的物件, 我們可以選取要遷移的物件有那些, 在上圖可以看到Tables有70個, View有17個, Stored Procedure類有20個...為了測試, 我們全部勾選遷移看看結果會如何...按[Next]
接下來是物件Mapping的方式, 在Migration Method只有兩個選項: Generic及MS SQL Default, 我都用MS SQL Default的方式, 另外可以設置Parameters, 就是按下上圖右邊的幾個[Set Parameters>>]就會出現更多的選項, 例如在資料表的部份可選擇字元集..我都使用預設值, 主要是看看整個遷移的程序如何...按[Next]

上圖就是要進行遷移工作的前奏, MySQL Migration Toolkit會先解析SQL Server中的資料庫, 以反向工程取得的資料, 產生要在MySQL資料庫系統中建立資料庫的Script File...等這個過程執行完畢, 如果資料庫的物件很多, 這個程序會花好一陣子時間, 按下[Next]

然後MySQL Migration Toolkit會把解析完成的結果先以表列方式顯示, 如果解析有問題的部份, 也會標示出來, 如上圖, 上圖的表列清單是已經被我展開的, 我是想展示一下錯誤的地方:
"The datatype xml cannot be migrated.", 我看了好幾個錯誤, 幾乎都是相同的xml資料型態無遷移的問題...MySQL Server似乎還沒有xml資料型態, 所以無法辨識SQL Server 2005以後版本中的xml資料型態. 但是, MySQL有XML處理函數, 所以, 我想我們可以把xml檔案以文字檔案物件型態載入BLOB資料欄位, 再在MySQL中處理該欄位內容, 只是, Migration Toolkit現在還無法處理xml資料型態的遷移工作. 我們不管這個錯誤, 按[Next]看看MySQL Migration Toolkit還能做到那些地步...

接下來是詢問要如何進行遷移的工作? 有兩種方式, 線上直接執行, 第二種方式是產生一個Script File, 待日後可以重覆的執行相同的遷移工作...當然, 兩種方式一起進行是很好的選擇, 這樣可以日後發現遷移錯誤時, 有跡可查證問題發生點....我建議是線上遷移同時產生Script File...畢竟資料庫遷移不是經常要重覆做的工作, 所以留下Script File的目的, 是為了日後萬一要重做遷移, 或是遷移的結果有問題, 要找出問題發生的原因...把兩種遷移進行方式都勾選後, 按下[Next]

接著出現遷移過程的第一步: 在目標料資料庫建立各項物件, 也就是在MySQL上先建立資料庫, 再把物件一個一個的建立起來, 由於SQL Server 2005資料庫中有Schema, 所以, MySQL是一個SQL Server Schema建一個資料庫...會建立六個資料庫, 以及其中的各項物件...如果想看詳細建立的過程, 即Log內容, 可以按下[Advanced>>], 等候全部遷移過程做完, 如果有任何問題, 可以按[Back]回到前面步驟重來, 或是沒有問題, 按[Next]

當物件建立的遷移過程做完後, 遷移的結果會顯示如上圖, 視窗上半是錯誤發生的原因說明, 視窗下半部是錯誤相關的完整SQL指令..我們可以在這個頁面中, 一個一個的把錯誤修改好, 在上視窗選擇錯誤訊息, 在下視窗中輯錯誤的指令..例如在上圖, 上視窗中我已經把錯誤訊息拉出來(相關的資料表是HumanResources.EmployeeAddress), 下視窗我也把錯誤問題的指令反白標示, 主要是MySQL沒有newid()這個函數, 所以我把反白的地方刪除, 按下下視窗右邊的[Apply Change], 如果想重新執行看看修訂的結果, 可以按下[Recreate Objects], 這時會重做建立物件的工作, 如果要遷移的資料庫很大, 建議全改好再按下[Recreate Objects]...重新執行後的結果如下圖:

各位可以看到EmployeeAddress已經沒有發生錯誤問題了...在下視窗右邊有個[Comment Out], 意是是不改錯誤了, 也不要進行這個物件的遷移...[Discard Change]是指放棄在下視窗中所做的所有編輯工作, 還原到還沒修改前的原始狀態...如果不想再調整出問題的物件, 就按下[Next]吧....
今天先介紹到這裏, 明天繼續...並把Migration Toolkit做個了結...


1 則留言

0
fireflybug
iT邦研究生 5 級 ‧ 2009-11-18 15:55:35

大大真的很認真,佛心來的,值得鼓勵!!

我要留言

立即登入留言