版本信息
Oracle: 19c Kettle: pdi-ce-9.2.0.0 openjdk version "1.8.0_292" OpenJDK Runtime Environment (build 1.8.0_292-b10) OpenJDK 64-Bit Server VM (build 25.292-b10, mixed mode)
Kettle介紹:Link
基本概念:
1.Transformation:定義對數據操作的容器,數據操作就是數據從輸入到輸出的一個過程,可以理解為比Job粒度更小一級的容器,我們將任務分解成Job,然后需要將Job分解成一個或多個Transformation,每個Transformation只完成一部分工作 (定義對數據操作的容器,數據操作就是數據從輸入到輸出的一個過程,可以理解為比作業粒度更小一級的容器,我們將任務分解成作業,然后需要將作業分解成一個或多個轉換,每個轉換只完成一部分工作) 2.Step:是Transformation內部的最小單元,每一個Step完成一個特定的功能。 3.Job:負責將Transformation組織在一起進而完成某一工作,通常我們需要把一個大的任務分解成幾個邏輯上隔離的Job,當這幾個Job都完成了,也就說明這項任務完成了 (負責將[轉換]組織在一起進而完成某一塊工作,通常我們需要把一個大的任務分解成幾個邏輯上隔離的作業,當這幾個作業都完成了,也就說明這項任務完成了) 4.Job Entry:Job Entry是Job內部的執行單元,每一個Job Entry用於實現特定的功能,如:驗證表是否存在,發送郵件等。可以通過Job來執行另一個Job或者Transformation,也就是說Transformation和Job都可以作為Job Entry 5.Hop:用於在Transformation中連接Step,或者在Job中連接Job Entry,是一個數據流的圖形化表示 在Kettle中Job中的JobEntry是串行執行的,故Job中必須有一個Start的JobEntry;Transformation中的Step是並行執行的
概念模型
1.需要安裝Java-Jdk,設置環境變量:KETTLE_HOME
2.下載Kettle程序:Link,不需要安裝,解壓點擊 Spoon.bat 運行程序
3.使用
3.1. Kettle 連接 Oracle3.1.1. Kettle 連接 Oracle 驅動:Driver class 'oracle.jdbc.driver.OracleDriver' could not be found 3.2. Kettle 加密字符串
3.3. Kettle 使用變量
3.4. Kettle 創建轉換[Transformation]和定時任務[Job]
3.5. Kettle 讀取Excel中的數據保存到Oracle
3.5.1. Kettle Excel導入增加常量【增加列】
3.5.2. kettle的轉換組件
3.6. Kettle 自動調度,通過腳本運行轉換[Transformation]和定時任務[Job]
9.異常
9.1.ORA-28040: No matching authentication protocol
原因:Oracle連接客戶端與服務端Oracle的版本不匹配造成的,可使用 3.1.1方法 解決,也可以點擊3.1.1的鏈接下載包替換【對應關系不清楚,我試過還是同樣的錯誤】
9.2.ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
方法:DatabaseName的值為 ServerName,前面需要加 “/”
9.3.啟動時提示:could not create the java virtual machine
9.3.1.並不是java虛擬機出了問題,需要修改下的spoon.bat里內存配置
if "%PENTAHO_DI_JAVA_OPTIONS%"=="" set PENTAHO_DI_JAVA_OPTIONS="-Xms2058m" "-Xmx1024m" 改為 if "%PENTAHO_DI_JAVA_OPTIONS%"=="" set PENTAHO_DI_JAVA_OPTIONS="-Xms512m" "-Xmx512m" 如果電腦內存小於4G,建議可以再小一些
9.3.2.如果啟動繼續報錯,"A java exception has occurred" ,可以考慮下載的Kettle版本是否與你JDK匹配
9.4.點擊“Test”按鈕,沒有任何響應
原因:jdbc 和 Kettle 版本不匹配,按照 3.1 的方法就能處理
9.9.更多異常參考: Link