kettle 是純 java 開(kāi)發(fā),開(kāi)源的 ETL工具,用于數(shù)據(jù)庫(kù)間的數(shù)據(jù)遷移 ??梢栽?Linux、windows、unix 中運(yùn)行。有圖形界面,也有命令腳本還可以二次開(kāi)發(fā)
kettle 的官網(wǎng)是 https://community.hitachivantara.com/docs/DOC-1009855,github 地址是 https://github.com/pentaho/pentaho-kettle。
安裝
由于 kettle 是基于 java 的,因此需要安裝 java 環(huán)境,并配置 JAVA_HOME 環(huán)境變量,建議安裝 JDK1.8 及以上,7.0以后版本的 kettle 不支持低版本 JDK。
下載相應(yīng)的數(shù)據(jù)庫(kù)驅(qū)動(dòng)
由于 kettle 需要連接數(shù)據(jù)庫(kù),因此需要下載對(duì)應(yīng)的數(shù)據(jù)庫(kù)驅(qū)動(dòng),例如 MySQL 數(shù)據(jù)庫(kù)需要下載 mysql-connector-java.jar,oracle 數(shù)據(jù)庫(kù)需要下載 ojdbc.jar。下載完成后,將 jar 放入 kettle 解壓后路徑的 lib 文件夾中即可
注意:本文基于 pdi-ce-7.0.0.0-25 版本進(jìn)行介紹,低版本可能有區(qū)別。
啟動(dòng)
雙擊 Spoon.bat 就能啟動(dòng) kettle 。
轉(zhuǎn)換
轉(zhuǎn)換包括一個(gè)或多個(gè)步驟,步驟之間通過(guò)跳(hop)來(lái)連接。跳定義了一個(gè)單向通道,允許數(shù)據(jù)從一個(gè)步驟流向另一個(gè)步驟。在Kettle中,數(shù)據(jù)的單位是行,數(shù)據(jù)流就是數(shù)據(jù)行從一個(gè)步驟到另一個(gè)步驟的移動(dòng)。
-
打開(kāi) kettle,點(diǎn)擊 文件->新建->轉(zhuǎn)換
image -
在左邊 DB 連接處點(diǎn)擊新建
image -
根據(jù)提示配置數(shù)據(jù)庫(kù),配置完成后可以點(diǎn)擊測(cè)試進(jìn)行驗(yàn)證,這邊以 MySQL 為例
image -
在左側(cè)找到表輸入(核心對(duì)象->輸入->表輸入),拖到右方
image -
雙擊右側(cè)表輸入,進(jìn)行配置,選擇數(shù)據(jù)源,并輸入 SQL??梢渣c(diǎn)擊預(yù)覽進(jìn)行預(yù)覽數(shù)據(jù)
image
-
在左側(cè)找到插入/更新(核心對(duì)象->輸出->插入/更新),拖到右方
image -
按住 Shift 鍵,把表輸入和插入/更新用線連接起來(lái)
image -
雙擊插入/更新進(jìn)行配置
image -
點(diǎn)擊運(yùn)行,就可以運(yùn)行這一個(gè)轉(zhuǎn)換
image -
運(yùn)行結(jié)束后,我們可以在下方看到運(yùn)行結(jié)果,其中有日志,數(shù)據(jù)預(yù)覽等,我們可以看到一共讀取了多少條數(shù)據(jù),插入更新了多少數(shù)據(jù)等等
image 這樣就完成了一個(gè)最簡(jiǎn)單的轉(zhuǎn)換,從一個(gè)表取數(shù)據(jù),插入更新到另一個(gè)表
作業(yè)
如果想要定時(shí)運(yùn)行這個(gè)轉(zhuǎn)換,那么就要用到作業(yè)
-
新建一個(gè)作業(yè)
image -
從左側(cè)依次拖動(dòng) START 、轉(zhuǎn)換、成功到右側(cè),并用線連接起來(lái)
image -
雙擊 START,可以配置作業(yè)的運(yùn)行間隔,這邊配置了每小時(shí)運(yùn)行一次
image -
雙擊轉(zhuǎn)換,選擇之前新建的那個(gè)轉(zhuǎn)換
image -
點(diǎn)擊運(yùn)行,就能運(yùn)行這次作業(yè),點(diǎn)擊停止就能停止。在下方執(zhí)行結(jié)果,可以看到運(yùn)行的日志
image 這樣就完成了一個(gè)最簡(jiǎn)單的作業(yè),每隔1小時(shí),將源表的數(shù)據(jù)遷移到目標(biāo)表