ETL工具具有以下優點:
l 簡化了用戶的操作,特別是源數據結構發生改變后只需在ETL做簡單修改;
l 支持各種數據源,本次數據目錄上傳涉及從市場監管局Oracle數據庫轉換為MySQL數據庫;
l 支持各種硬件和軟件平臺;
l 數據處理組件非常豐富,通用性更強,組件很容易復用;
l 提供靈活的定制規則,更好的控制數據質量。
Kettle概念
Kettle是一款國外開源的ETL工具,純java編寫,可以在Window、Linux、Unix上運行,綠色無需安裝,數據抽取高效穩定。
Kettle中文名稱叫水壺,該項目的主程序員MATT希望把各種數據放到一個壺里,然后以一種指定的格式流出。
Kettle這個ETL工具集,它允許你管理來自不同數據庫的數據,通過提供一個圖形化的用戶環境來描述你想做什么,而不是你想怎么做。
Kettle中有兩種腳本文件,transformation和job,transformation完成針對數據的基礎轉換,job則完成整個工作流的控制。
Kettle使用及組件介紹
Kettle提供了資源庫方式的方式來整合所有的工作,但是因為資源庫移植不方便,所以我們選擇沒有資源庫;
1)創建一個新的transformation,點擊保存到本地路徑,例如保存到D:/etltest下,保存文件名為EtltestTrans,kettle默認transformation文件保存后后綴名為ktr;
2)創建一個新的job,點擊保存到本地路徑,例如保存到D:/etltest下,保存文件名為EtltestJob,kettle默認job文件保存后后綴名為kjb;
Main Tree菜單列出的是一個transformation中基本的屬性,可以通過各個節點來查看。 DB連接:顯示當前transformation中的數據庫連接,每一個transformation的數據庫連接都需要單獨配置。 Steps:一個transformation中應用到的環節列表。 Hops:一個transformation中應用到的節點連接列表。 | |
Core Objects菜單列出的是transformation中可以調用的環節列表,可以通過鼠標拖動的方式對環節進行添加。 Input:輸入環節 Output:輸出環節 Lookup:查詢環節 Transform:轉化環節 Joins:連接環節 Scripting:腳本環節 |
?每一個環節可以通過鼠標拖動來將環節添加到主窗口中。
?并可通過shift+鼠標拖動,實現環節之間的連接。
轉換常用環節介紹
類別 | 環節名稱 | 功能說明 |
Input | 文本文件輸入 | 從本地文本文件輸入數據 |
表輸入 | 從數據庫表中輸入數據 | |
獲取系統信息 | 讀取系統信息輸入數據 | |
Output | 文本文件輸出 | 將處理結果輸出到文本文件 |
表輸出 | 將處理結果輸出到數據庫表 | |
插入/更新 | 根據處理結果對數據庫表機型插入更新,如果數據庫中不存在相關記錄則插入,否則為更新。會根據查詢條件中字段進行判斷 | |
更新 | 根據處理結果對數據庫進行更新,若需要更新的數據在數據庫表中無記錄,則會報錯停止 | |
刪除 | 根據處理結果對數據庫記錄進行刪除,若需要刪除的數據在數據庫表中無記錄,則會報錯停止 | |
Lookup | 數據庫查詢 | 根據設定的查詢條件,對目標表進行查詢,返回需要的結果字段 |
流查詢 | 將目標表讀取到內存,通過查詢條件對內存中數據集進行查詢 | |
調用DB存儲過程 | 調用數據庫存儲過程 | |
Transform | 字段選擇 | 選擇需要的字段,過濾掉不要的字段,也可做數據庫字段對應 |
過濾記錄 | 根據條件對記錄進行分類 | |
排序記錄 | 將數據根據某以條件,進行排序 | |
空操作 | 無操作 | |
增加常量 | 增加需要的常量字段 | |
Scripting | Modified Java Script Value | 擴展功能,編寫JavaScript腳本,對數據進行相應處理 |
Mapping | 映射(子轉換) | 數據映射 |
Job | Sat Variables | 設置環境變量 |
Get Variables | 獲取環境變量 |
Main Tree菜單列出的是一個Job中基本的屬性,可以通過各個節點來查看。 DB連接:顯示當前Job中的數據庫連接,每一個Job的數據庫連接都需要單獨配置。 Job entries:一個Job中引用的環節列表 | |
Job entries菜單列出的是Job中可以調用的環節列表,可以通過鼠標拖動的方式對環節進行添加。 每一個環節可以通過鼠標拖動來將環節添加到主窗口中。 并可通過shift+鼠標拖動,實現環節之間的連接。 |
常用環節介紹
類別 | 環節名稱 | 功能說明 |
Job entries | START | 開始 |
DUMMY | 結束 | |
Transformation | 引用Transformation流程 | |
Job | 引用Job流程 | |
Shell | 調用Shell腳本 | |
SQL | 執行sql語句 | |
FTP | 通過FTP下載 | |
Table exists | 檢查目標表是否存在,返回布爾值 | |
File exists | 檢查文件是否存在,返回布爾值 | |
Javascript | 執行JavaScript腳本 | |
Create file | 創建文件 | |
Delete file | 刪除文件 | |
Wait for file | 等待文件,文件出現后繼續下一個環節 | |
File Compare | 文件比較,返回布爾值 | |
Wait for | 等待時間,設定一段時間,kettle流程處于等待狀態 | |
Zip file | 壓縮文件為ZIP包 |