業(yè)務(wù)需求:新OA中有一份數(shù)據(jù)沒有,只能從舊OA中取, 于是我把數(shù)據(jù)備份到DW中,直接從DW中取數(shù)。
什么是kettle
Kettle是一款國外開源的ETL工具,純java編寫,可以在Window、Linux、Unix上運(yùn)行,數(shù)據(jù)抽取高效穩(wěn)定。
Kettle 中文名稱叫水壺,該項(xiàng)目的主程序員MATT 希望把各種數(shù)據(jù)放到一個壺里,然后以一種指定的格式流出。
官網(wǎng)下載
流程
一、 讀入數(shù)據(jù)
新建transformation (ctrl+n), steps里選擇Table input
, 并拖到圖中。

雙擊,彈出對話框,更改Step Name為 Read Data, 點(diǎn)擊Connection 后面的new, 彈出對話框,填入數(shù)據(jù)庫信息。測試成功后關(guān)閉。然后Connections選擇數(shù)據(jù)庫名字,如這里OLD_OA , 然后在SQL框里輸入SQL語句,基本語句已經(jīng)寫好,可以修改相應(yīng)內(nèi)容就好了。輸入完后可以點(diǎn)擊Preview預(yù)覽下內(nèi)容,這時會彈出輸入框要求輸入默認(rèn)行數(shù),保持默認(rèn)就好了。預(yù)覽信息確認(rèn)無誤后,可以關(guān)閉,點(diǎn)擊OK,這一步就是好了。

Step信息

輸入數(shù)據(jù)庫信息.png

預(yù)覽行數(shù)

預(yù)覽內(nèi)容
二、 寫入數(shù)據(jù)庫
其實(shí)整個過程和讀入數(shù)據(jù)類似,steps里選擇Table out

雙擊,修改Step name為 Write to Database, Connections 點(diǎn)擊new填入數(shù)據(jù)庫信息。這里要注意的是這里的數(shù)據(jù)是目標(biāo)數(shù)據(jù)庫,是要把信息存入的數(shù)據(jù)庫。修改相應(yīng)的信息,Connection里選擇剛剛的數(shù)據(jù)庫,Target schema為服務(wù)名, Target table寫入數(shù)據(jù)庫里未存在的表名。至此,好像除了點(diǎn)OK,都結(jié)束了。

table out
注意:這里有一個關(guān)鍵點(diǎn),一定要點(diǎn)擊sql,會出現(xiàn)一個sql語句,這里生成table的語句,然后點(diǎn)擊excut執(zhí)行,否則等下運(yùn)行tranformation的時候會報(bào)錯,表不存在
三、 連接steps
兩個steps建立好了,鼠標(biāo)按住read data 同時按信shift鍵拖動鼠標(biāo)到write to database,會有一條線出現(xiàn),這條線就是hops, 其實(shí)就是流程方向,雙擊的話會看到對話框,從read data 到write to database。

流轉(zhuǎn)方向
四、 運(yùn)行transformation
一切就緒,點(diǎn)擊運(yùn)行圖標(biāo),
對話框信息默認(rèn),直接點(diǎn)擊Run, transformation就如我們期待那樣正常運(yùn)行了。運(yùn)行結(jié)束,可以到目標(biāo)數(shù)據(jù)庫中查看,我們想要到數(shù)據(jù)已經(jīng)出現(xiàn)了。

運(yùn)行
后記
其實(shí)kettle非常強(qiáng)大,可以做的事情還有很多,數(shù)據(jù)的抽取,清洗,轉(zhuǎn)換,加載,我這時只是做了最基本的流轉(zhuǎn),其實(shí)直接用代碼寫也不會慢,但是可以做個示范,有興趣的朋友可以自己探索下。