數據移植ETL

1、什麼是ETL

ETL (Extract-Transform-Load),用來描述將數據從來源端經過抽取(extract)、清洗轉換(transform)、加載(load)至目的端的過程。通俗的說法就是從數據源抽取數據出來,進行清洗加工轉換,然後加載到定義好的數據倉庫模型中去。

2、爲什麼要用ETL工具?

(1)當數據來自不同的物理主機,這時候如使用SQL語句去處理的話,就顯得比較吃力且開銷也更大。

(2)數據來源可以是各種不同的數據庫或者文件,這時候需要先把他們整理成統一的格式後纔可以進行數據的處理,這一過程用代碼實現顯然有些麻煩。

(3)在數據庫中我們當然可以使用存儲過程去處理數據,但是處理海量數據的時候存儲過程顯然比較吃力,而且會佔用較多數據庫的資源,這可能會導致數據資源不足,進而影響數據庫的性能。

3、ETL的優點

(1)支持多種異構數據源的連接。

(2)圖形化的界面操作十分方便。

(3)處理海量數據速度快、流程更清晰等。

4、ETL使用的工具

(1)Kettle:免費,開源,使用純java編寫,只需要jvm環境即可部署。可跨平臺,擴展性好。

(2)Datastage:IBM公司的商業軟件,最專業的ETL工具,價格高,大數據量下處理速度快,穩定。但部署有一定難度。

(3)Informatica:商業軟件,價格便宜。適合大規模ETL應用。部署需要服務器和客戶端的安裝,廣泛支持各類結構化、非結構化的數據源。

本次介紹以Kettle爲例。

5、數據移植目標

(1)保證在新系統上線後,業務上與舊系統的連貫性。

(2)數據移植的整個過程要保證在3個小時以內。

6、數據移植流程

 

數據移出→數據清洗→數據移入

 

(1)數據移出

新舊系統、業務規則差異分析。首先要分析新舊系統數據差異,確定需要移植的數據範圍。

(2)數據清洗

冗餘的數據清除

殘缺的數據補錄

錯誤的數據糾正。

(3)數據移入

根據中間表進行移入處理,移入檢核,將移入後數據加載到新核心,制定移植專項測試計劃,維護移植測試環境的核心應用。

7、數據移植工具Kettle使用方法

在官網http://kettle.pentaho.com/下載並解壓Kettle軟件,需要JRE環境支持。移植過程大致分爲5個步驟:

創建源表→創建目標表→創建映射→創建工作流及任務→啓動工作流。

(1)雙擊Spoon.bat運行軟件,點擊“沒有資源庫”,進入主界面。左上角點擊”文件-新建-轉換“保存爲demo.ktr。

(2)左側選擇“核心對象”面板。”在“輸入”文件夾下選擇“表輸入”並把它拖動到右側編輯區。

(3)雙擊編輯區的“表輸入”圖標,編輯數據輸入來源。點擊“數據庫連接”右側的“新建”按鈕,按demo背景中的要求,配置數據庫參數。配置後點擊“Test”,若配置有誤將彈出異常提示,根據提示修正。若無誤將顯示如下信息:

注意:如果連接失敗,請在安裝目錄Kettle\data-integration\lib中加入對應的數據庫驅動

點擊“確定”和“OK”,我們爲此表輸入對象確定了數據庫。

(4)繼續點擊“獲取SQL查詢語句”,選擇輸入表。這裏我們選擇EMPL這張表。

點擊“確定”完成表輸入對象的編輯。

(5)在左側“核心對象”中的“轉換”文件夾中選擇“字段選擇”功能,拖動到右側編輯區。按住鍵盤shift同時鼠標從“表輸入”爲起點,“字段選擇”爲終點畫一條連接。如圖:

(6)雙擊“字段選擇”,打開編輯窗口,選擇“元數據”面板,點擊右側“獲取改變的字段”,將自動列出之前表輸入中所有字段。

(7)根據要抽取的目標表字段名(輸出字段名),給每一個輸入字段改成和輸出字段相同的名稱。同時請務必在Encoding一欄中選擇輸出庫的編碼。根據demo的背景要求,我們選擇utf-8。

(8)編輯完“字段選擇”後點擊“確定”關閉窗口。同上,在“輸出”文件夾中拖動一個“表輸出”到右側編輯區,並畫連接。

(9)雙擊“表輸出”打開其編輯窗口。同“表輸入”一樣,按照demo背景要求,配置好本地庫。

(10)同“表輸入”,選擇輸出的目標表。選中“指定數據庫字段”選擇後在“數據庫字段”面板中點擊“輸入字段映射”。

(11)因之前已經在“字段選擇”中爲每一個輸入字段改名,這裏點“猜一猜”,會根據字段近似度自動匹配映射關係。

映射完輸入輸出字段的關係,檢查無誤後,點擊“確定”。

(12)至此,我們最簡單的一個抽取示例的轉換建立完畢,點擊“校驗這個轉換”,Kettle會校驗並給出簡單的報告。

(13)點擊“運行這個轉換”,選擇“本地執行”,點擊“啓動”來執行這個轉換。

(14)轉換的過程可以在控制檯實時顯示。同時“日誌”的詳細程度是可選的。

(15)執行完畢後,控制檯日誌若無異常信息,說明轉換成功,我們可以去本地庫查看。發現確實已被導入新庫,兩者記錄數相同。

(16)如果遷移結果出現亂碼,可以通過以下方式解決。例如本次我使用的源是Oracle(GBK),目標庫是MySQL(utf-8),遷移結束髮現中文全部亂碼,這時,點擊“表輸出”,重新編輯我們之前設置好的目標數據庫連接

點擊“編輯”“選項”,輸入參數:characterEncoding:utf8(目標庫的編碼格式)

保存,重新執行任務即可解決亂碼問題。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章