kettle
概述
什么是kettle
Kettle是一款開源的ETL工具,純java編寫。用於數據庫間的數據遷移 。
可以在 Linux、windows、unix 中運行。
推薦學習網站
kettle中文網:https://www.kettle.net.cn/2794.html
參考博客:https://juejin.cn/post/6986507517022961695
安裝
由於 kettle 是基於 java 的,因此需要安裝 java 環境,並配置 JAVA_HOME 環境變量。
建議安裝 JDK1.8 及以上,7.0以后版本的 kettle 不支持低版本 JDK。
8.2版下載地址:http://mirror.bit.edu.cn/pentaho/Pentaho%208.2/client-tools/
解壓即用
目錄說明



下載相應的數據庫驅動
由於 kettle 需要連接數據庫,因此需要下載對應的數據庫驅動。
例如 MySQL 數據庫需要下載 mysql-connector-java.jar,oracle 數據庫需要下載 ojdbc.jar。下載完成后,將 jar 放入 kettle 解壓后路徑的 lib 文件夾中即可。
啟動
雙擊 Spoon.bat 就能啟動 kettle 。
轉換
轉換包括一個或多個步驟,步驟之間通過hop來連接。
hop定義了一個單向通道,允許數據從一個步驟流向另一個步驟。
在Kettle中,數據的單位是行,數據流就是數據行從一個步驟到另一個步驟的移動
新建轉換
- 打開 kettle,點擊 文件->新建->轉換。

數據庫連接
- 在左邊 DB 連接處點擊新建。

- 根據提示配置數據庫,配置完成后可以點擊測試進行驗證,這邊以 MySQL 為例。
mysql5的話需要導入mysql-connector-java.jar對應的jar包

kettle默認使用的是org.gjt.mm.mysql.Driver,而mysql 8.0以上connector已經不再支持這個包名;
即使將mysql-connector-java-8.0.xx.jar包拷貝到data-integration/lib目錄下,還是報錯找不到驅動;
所以我們需要手動配置使用com.mysql.cj.jdbc.Driver作為驅動。
com.mysql.cj.jdbc.Driver兼容JDK8環境,不兼容JDK7環境,JDK版本不匹配時連接也會出錯,如果服務器上JDK版本較低 要升級下
更新jdbc.properties文件,在simple-jndi目錄下,新增新增jndi配置:
Myslq8_DB/type=javax.sql.DataSource
Myslq8_DB/driver=com.mysql.cj.jdbc.Driver
Myslq8_DB/url=jdbc:mysql://db_ip:3306/db_name?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&serverTimezone=Asia/Shanghai
Myslq8_DB/user=db_user
Myslq8_DB/password=db_password
新建數據庫連接,選擇mysql數據庫,選擇JNDI,在JNDI名稱中填入Myslq8_DB.

表輸入
在左側找到表輸入(核心對象->輸入->表輸入),拖到右方。

- 雙擊右側表輸入,進行配置,選擇數據源,並輸入 SQL。可以點擊預覽進行預覽數據。


插入更新
- 在左側找到插入/更新(核心對象->輸出->插入/更新),拖到右方。

- 按住 Shift 鍵,把表輸入和插入/更新用線連接起來。

- 雙擊插入/更新進行配置。

- 點擊運行,就可以運行這一個轉換

這樣就完成了一個最簡單的轉換,從一個表取數據,插入更新到另一個表。
