因為公司近期招了幾個實習生,需要我來做一個關于Kettle的培訓,準備了一些培訓的資料,一個ppt,用于培訓的,一個數據庫備份和一個詳細的操作文檔,是一個小作業,不敢獨享,發出來給大家share,順便作為這個技術博客的頭彩,希望大家能夠多來關注。
如果大家不愿意看網頁版,可以下載相關文檔到本地研究:)
培訓ppt在
這里
培訓手冊在
這里
練習數據庫備份在
這里
練習的腳本文件在
這里
Kettle培訓手冊
Etl介紹
ETL(Extract-Transform-Load的縮寫,即數據抽取、轉換、裝載的過程),對于金融IT來說,經常會遇到大數據量的處理,轉換,遷移,所以了解并掌握一種etl工具的使用,必不可少。
Kettle是一款國外開源的etl工具,純java編寫,綠色無需安裝,數據抽取高效穩定。Kettle中有兩種腳本文件,transformation和job,transformation完成針對數據的基礎轉換,job則完成整個工作流的控制。
kettle部署運行
將kettle2.5.1文件夾拷貝到本地路徑,例如D盤根目錄。
雙擊運行kettle文件夾下的spoon.bat文件,出現kettle歡迎界面:

稍等幾秒

選擇沒有資源庫,打開kettle主界面

創建transformation,job
點擊頁面左上角的
創建一個新的transformation,點擊
保存到本地路徑,例如保存到D:/etltest下,保存文件名為EtltestTrans,kettle默認transformation文件保存后后綴名為ktr
點擊頁面左上角的
創建一個新的job,點擊
保存到本地路徑,例如保存到D:/etltest下,保存文件名為EtltestJob,kettle默認job文件保存后后綴名為kjb
創建數據庫連接
在transformation頁面下,點擊左邊的【Main Tree】,雙擊【DB連接】,進行數據庫連接配置。

Connection name自命名連接名稱
Connection type選擇需要連接的數據庫
Method of access選擇連接類型
Server host name寫入數據庫服務器的ip地址
Database name寫入數據庫名
Port number寫入端口號
Username寫入用戶名
Password寫入密碼
例如如下配置:

點擊【test】,如果出現如下提示則說明配置成功

點擊關閉,再點擊確定保存數據庫連接。
一個簡單的ktr例子
目標:
從交易表(trade),帳戶表(account),客戶表(cust)抽數交易相關的所有信息,并判斷對公對私分別進行處理,輸出到文本文件中。
操作步驟:
在EtltestTrans頁面下,點擊左側的【Core Objects】,點擊【Input】,選中【表輸入】,拖動到主窗口釋放鼠標。

雙擊【表輸入】圖標
數據庫連接選擇剛剛創建好的etltest數據庫連接,在主窗口寫入對應的查詢語句

點擊確定完成。
點擊左側的【Lookup】,選中【數據庫查詢】,拖動到主窗口釋放鼠標。

按住shift鍵,用鼠標點中剛才創建的【表輸入】,拖動到【數據庫查詢】上,則建立了兩個環節之間的連接。

雙擊【數據庫查詢】圖標
步驟名稱寫入account表查詢,數據庫連接選擇剛剛創建好的etltest數據庫連接,查詢的表寫入account,查詢所需的關鍵字中,表字段寫入acctno,比較操作符寫入”=”,字段1寫入acctno。
在查詢表返回的值里面寫入custno,確定完成。

同上,再創建一個數據庫查詢,命名為cust表查詢,查詢的表寫入cust,查詢所需的關鍵字寫入custno=custno,查詢表返回的值寫入custname,custid,custtype

點擊左側的【Transform】,選中【過濾記錄】,拖動到主窗口釋放鼠標。

點擊左側的【Scripting】,選中兩個【Modified Java Script Value】,拖動到主窗口釋放鼠標。分別雙擊打開,重命名為”對公類型修改”和”對私類型修改”。
同時,分別創建【過濾記錄】和【對公類型修改】,【對私類型修改】的連接。
雙擊【規律記錄】打開。
第一個<field>里面選擇custtype,點擊<value>,在Enter value里面寫入1,確定

在發送true數據給步驟里,選擇【對私類型修改】,在發送false數據給步驟里,選擇【對公類型修改】,確定保存。

雙擊【對公類型修改】,在里面寫入javascript腳本語句
在字段中寫入custtype_cn,類型選為string。確定。

同理,在【對私類型修改】中,在里面寫入javascript腳本語句
在字段中寫入custtype_cn,類型選為string。確定。
點擊左側的【Transform】,選中兩個【增加常量】,拖動到主窗口釋放鼠標。分別雙擊打開,重命名為”增加對公常量”和”增加對私常量”。
分別建立【對公類型修改】和【對私類型修改】與【增加對公常量】和【增加對私常量】的連接

雙擊【增加對公常量】,名稱寫入value,類型選擇string,值寫入”這是一筆對公客戶發生的交易”,確定保存。

同理,雙擊【增加對私常量】,名稱寫入value,類型選擇string,值寫入”這是一筆對私客戶發生的交易”,確定保存。
點擊左側的【Output】,選中【文本文件輸出】,拖動到主窗口釋放鼠標。
建立【增加對公常量】,【增加對私常量】和【文本文件輸出】的連接。

雙擊打開【文本文件輸出】,文件名稱寫入D:\etltest\etltest.txt

點擊內容標簽,根據情況進行修改,例如

點擊字段標簽
名稱依次寫入tradeid,acctno,amt,custno,custname,custid,custtype_cn,value,類型根據各個字段實際類型進行選擇

確定保存
點擊
保存創建好的transformation。
點擊
運行這個轉換。

點擊launch,開始運行
當所有狀態都變成已完成時,則轉換完成。

另一個簡單的ktr例子
目的:
將上一個ktr生成的文本導入到數據庫中。
操作步驟:
創建一個transformation,命名為EtltestTransfile2db.ktr,創建數據庫連接etltest,點擊【Input】,選中【文本文件輸入】,拖到主窗口,釋放鼠標,雙擊打開
文件名稱里面寫入D:\etltest\etltest.txt

點擊內容標簽,分隔符寫入@@,將頭部的鉤去掉

點擊字段標簽,名稱依次寫入tradeid,acctno,amt,custno,custname,custid,custtype_cn,value,類型根據各個字段實際類型進行選擇

點擊【Transform】,選中【字段選擇】,拖到主窗口,釋放鼠標
點擊【Output】,選中【表輸出】,拖到主窗口,釋放鼠標
建立【文本文件輸入】和【字段選擇】與【字段選擇】和【表輸出】的連接

雙擊【表輸出】,目標表中寫入trade_all,提交記錄數量寫成1,確定保存。

雙擊【字段選擇】,點擊 獲取選擇的字段,再點擊Edlt Mapping,點擊OK確定,編輯所有字段對應關系,點確定。

點擊
運行這個轉換。,則將上一個ktr中生成的文本,導入到數據庫當中。
一個簡單的kjb例子
目的:
將上兩個transformation一起在同一個job里面調用執行。
操作步驟:
在EtlscriptJob頁面,點擊【Core
Objects】,點擊【Job
entries】,選中【START】拖動到主窗口釋放鼠標,再選中兩個【Transformation】,拖動到主窗口釋放鼠標,建立【START】和
【Transformation】與【Transformation】之間的連接。
雙擊第一個【Transformation】,在Transformation filename中寫入D:\etltest\EtltestTrans.ktr,確定保存。

同時將另外一個【Transformation】,路徑指向D:\etltest\EtltestTransfile2db.ktr,保存。
點擊
保存創建好的job。
點擊
運行這個轉換。
待所有任務都顯示成功,則為job調用transformation運行成功。
