本系列文章主要索引如下:
一、ETL利器Kettle實戰應用解析系列一【Kettle使用介紹】
二、ETL利器Kettle實戰應用解析系列二 【應用場景和實戰DEMO下載】
三、ETL利器Kettle實戰應用解析系列三 【ETL后台進程執行配置方式】
本文主要閱讀目錄如下:
ETL(Extract-Transform-Load的縮寫,即數據抽取、轉換、裝載的過程),對於企業或行業應用來說,我們經常會遇到各種數據的處理,轉換,遷移,所以了解並掌握一種etl工具的使用,必不可少,這里我介紹一個我在工作中使用了3年左右的ETL工具Kettle,本着好東西不獨享的想法,跟大家分享碰撞交流一下!在使用中我感覺這個工具真的很強大,支持圖形化的GUI設計界面,然后可以以工作流的形式流轉,在做一些簡單或復雜的數據抽取、質量檢測、數據清洗、數據轉換、數據過濾等方面有着比較穩定的表現,其中最主要的我們通過熟練的應用它,減少了非常多的研發工作量,提高了我們的工作效率,不過對於我這個.net研發者來說唯一的遺憾就是這個工具是Java編寫的。
Kettle是一款國外開源的ETL工具,純java編寫,可以在Window、Linux、Unix上運行,綠色無需安裝,數據抽取高效穩定。
Kettle 中文名稱叫水壺,該項目的主程序員MATT 希望把各種數據放到一個壺里,然后以一種指定的格式流出。
Kettle這個ETL工具集,它允許你管理來自不同數據庫的數據,通過提供一個圖形化的用戶環境來描述你想做什么,而不是你想怎么做。
Kettle中有兩種腳本文件,transformation和job,transformation完成針對數據的基礎轉換,job則完成整個工作流的控制。
3、1 安裝java JDK
1)首先到官網上下載對應JDK包,JDK1.5或以上版本就行;
2)安裝JDK;
3)配置環境變量,附配置方式:
安裝完成后,還要對它進行相關的配置才可以使用,先來設置一些環境變量,對於Java來說,最需要設置的環境變量是系統路徑變量path。
(1)要打開環境變量的設置窗口。右擊“我的電腦”,在彈出的快捷菜單中選擇“屬性”選項,進入“系統屬性”對話框,如圖所示。選擇“高級”標簽,進入“高級”選項卡,再單擊“環境變量”按鈕,進入“環境變量”對話框,如圖所示:
(2)在“Administrator的用戶變量”列表框中,選擇變量PATH,待其所在行變高亮后,單擊“編輯”按鈕,如圖所示。
(3)在彈出的“編輯系統變量”對話框中,將JDK安裝路徑下的bin目錄路徑設置到Path變量中,如圖所示。
編輯完后,單擊“確定”按鈕,進行保存,環境變量Path的設置就正式完成。
注意:設置Path變量的路徑,必須是JDK安裝目錄中的bin目錄,有時候在JDK安裝目錄的同一層會有JRE的安裝目錄,因此請謹慎選取相關路徑,避免將路徑設置成JRE目錄下的bin目錄。
3、2 測試JDK配置是否成功
設置好環境變量后,就可以對剛設置好的變量進行測試,並檢測Java是否可以運行。
(1)單擊“開始”按鈕,選擇“運行”選項,在“運行”對話框中輸入cmd命令。
(2)之后單擊“確定”按鈕,打開命令行窗口。
(3)在光標處輸入:javac命令,按下Enter鍵執行,即可看到測試結果
3、3 運行Kettle

|
Main Tree菜單列出的是一個transformation中基本的屬性,可以通過各個節點來查看。
DB連接:顯示當前transformation中的數據庫連接,每一個transformation的數據庫連接都需要單獨配置。
Steps:一個transformation中應用到的環節列表
Hops:一個transformation中應用到的節點連接列表 |
![]() |
Core Objects菜單列出的是transformation中可以調用的環節列表,可以通過鼠標拖動的方式對環節進行添加。
Input:輸入環節 Output:輸出環節 Lookup:查詢環節 Transform:轉化環節 Joins:連接環節 Scripting:腳本環節 |

類別 |
環節名稱 |
功能說明 |
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包 |