Kettle7.0實現oracle到mysql資料庫遷移
阿新 • • 發佈:2019-02-07
一、Kettle簡介
Kettle是一款國外開源的ETL工具,純java編寫,可以在Window、Linux、Unix上執行,綠色無需安裝,資料抽取高效穩定。kettle的資料抽取主要在於抽取資料,而沒有考慮資料庫的函式、儲存過程、檢視、表結構以及索引、約束等等,如果想對這些內容進行遷移,就需要通過寫指令碼或者更改kettle原始碼的方式實現了。
二、Kettle下載執行
以下是Kettle的國內映象下載地址:
http://mirror.bit.edu.cn/pentaho/Data%20Integration/
解壓後進入到Kettle目錄,雙擊執行spoon.bat檔案,出現如下介面及說明kettle成功部署。
在執行之前,我們需要把對應資料庫的jar包匯入到Kettle的lib目錄下,比如我們需要把oracle遷移到mysql,那就需要oracle和mysql兩個jar包:
這個jar包可以直接複製專案裡面的,就不用糾結版本問題了。
三、Kettle批量遷移庫表
1.新建作業
選擇介面上的檔案–新建–作業
2.新建資料庫連線
由於需要將oracle遷移到mysql,所以我們要分別配置oracle和mysql兩個資料庫。
配置oracle資料庫:
配置mysql資料庫:
這裡有個坑需要注意一下,就是oracle資料庫本身的編碼要和mysql的保持一致,同時我們需要在配置mysql連線的“選項”裡面配置對應的編碼,否則mysql裡面導過去的表會出現亂碼,且某些表可能會遷移失敗造成job異常終止:
3.進行多表遷移
配置完成後,選擇“工具=>嚮導=>複製多表嚮導”
在彈出框中選擇源資料庫和目標資料庫:
點選“下一步”,在左側選擇需要匯入到mysql的庫表:
點選“下一步”,輸入名字和儲存位置:
點選“完成”,會自動生成轉換過程:
此時,點選左上角的執行按鈕直接執行:
執行結束後,檢視執行結果的日誌和作業度量是否有報錯,沒有報錯代表遷移成功:
最後需要檢視一下mysql資料庫庫表的資料是否一致,可以使用count語句判斷,此外,如果資料庫有大量?之類的字元,就要考慮資料庫編碼選擇是否一致且mysql的編碼配置是否正確了。