1、下載kettle包,并解壓
2、安裝jdk,并配置java環(huán)境
a).打開我的電腦--屬性--高級--環(huán)境變量 b).新建系統(tǒng)變量JAVA_HOME和CLASSPATH 變量名:JAVA_HOME
變量值:C:\\Program Files\\Java\\jdk1.7.0[具體路徑以自己本機(jī)安裝目錄為準(zhǔn)] 變量名:CLASSPATH
變量值:.;%JAVA_HOME%\\lib\\dt.jar;%JAVA_HOME%\\lib\ools.jar; c). 選擇“系統(tǒng)變量”中變量名為“Path”的環(huán)境變量,雙擊該變量,把JDK安裝路徑中bin目錄的絕對路徑,添加到Path變量的值中,并使用半角的分號和已有的路徑進(jìn)行分隔。
變量名:Path
變量值:%JAVA_HOME%\\bin;%JAVA_HOME%\\jre\\bin; 3、配置kettle環(huán)境
在系統(tǒng)的環(huán)境變量中添加KETTLE_HOME變量,目錄指向kettle的安裝目錄:D:\\kettle\\data-integration
4、啟動spoon
Windows直接雙擊批處理文件 Spoon.bat具體路徑為: kettle\\data-integration\\Spoon.bat
Linux 則是執(zhí)行spoon.sh,具體路徑為: ~/kettle/data-integration/spoon.sh
1 / 11
二、 使用Kettle同步數(shù)據(jù)
同步數(shù)據(jù)常見的應(yīng)用場景包括以下4個種類型:
??只增加、無更新、無刪除 ??只更新、無增加、無刪除 ??增加+更新、無刪除 ??增加+更新+刪除
只增加、無更新、無刪除
對于這種只增加數(shù)據(jù)的情況,可細(xì)分為以下2種類型: 1) 基表存在更新字段。
通過獲取目標(biāo)表上最大的更新時間或最大ID,在“表輸入”步驟中加入條件只讀取新增的數(shù)據(jù)。
2) 基表不存在更新字段。 通過“插入/更新”步驟進(jìn)行插入。
插入/更新步驟選項:
2 / 11
只更新、無增加、無刪除
通過“更新”步驟進(jìn)行更新。
3 / 11
更新選項:
增加+更新、無刪除
通過“插入/更新”步驟進(jìn)行插入。
區(qū)別是“插入/更新步驟”中的選項,去掉“不執(zhí)行任何更新”的勾選:
4 / 11
增加+更新+刪除
這種數(shù)據(jù)同步情況,可細(xì)分為以下2種情況: 1) 源庫有表保存刪除、更新和新增的信息。
通過條件判斷,分別進(jìn)行“插入/更新”和“刪除”即可,如下圖所示。
5 / 11
2) 源庫沒有保存增刪改信息
Kettle提供了一種對比增量更新的機(jī)制處理這種情況,可通過“合并記錄”步驟實現(xiàn),該步驟的輸入是新舊兩個數(shù)據(jù)源,通過關(guān)鍵字進(jìn)行數(shù)據(jù)值比對,對比結(jié)果分為以下4種類型:
“Identical”: 關(guān)鍵字在新舊數(shù)據(jù)源中都存在,域值相同 “changed”: 關(guān)鍵字在新舊數(shù)據(jù)源中都存在,但域值不同 “new”: 舊數(shù)據(jù)源中沒有找到關(guān)鍵字 “deleted”: 新數(shù)據(jù)源中沒有找到關(guān)鍵字
兩個數(shù)據(jù)源的數(shù)據(jù)都進(jìn)入下一步驟,上述4種結(jié)果類型作為輸出表的標(biāo)志字段進(jìn)行保存。
以下為示例:
??源數(shù)據(jù)庫測試腳本
create table k1 (f1 varchar2(200),f2 varchar2(200)) truncate table k1;
insertinto k1(f1,f2) values('1','11'); insert into k1(f1,f2) values('2','22'); insert into k1(f1,f2) values('5','5'); commit;
??目標(biāo)數(shù)據(jù)庫測試腳本
create table k1 (f1 varchar2(200),f2 varchar2(200)) truncate table k1;
insert into k1(f1,f2) values('1','1');
6 / 11
insert into k1(f1,f2) values('2','2'); insert into k1(f1,f2) values('3','3'); insert into k1(f1,f2) values('4','4'); commit; 合并過程如下:
其中“合并記錄”步驟的選項:
執(zhí)行后,查詢K1_TEST結(jié)果如下:
7 / 11
可以看到,該結(jié)果表的BZ字段保存了更新、刪除、新增的記錄信息,通過條件分支即可分別對這些記錄進(jìn)行相應(yīng)的處理。
“條件”選項:
小結(jié)
Kettle提供了可視化的設(shè)計工具,基本上可通過拖拉配置的方式實現(xiàn)以上4種類型的數(shù)據(jù)同步,操作上相對較為簡單。
數(shù)據(jù)同步的性能與源數(shù)據(jù)庫、目標(biāo)數(shù)據(jù)庫以及執(zhí)行Kettle轉(zhuǎn)換操作的主機(jī)相關(guān),在筆者的測試環(huán)境上(源數(shù)據(jù)庫和目標(biāo)數(shù)據(jù)庫部署在雙核CPU/4G內(nèi)存的PC機(jī)上、執(zhí)行Kettle轉(zhuǎn)換操作的主機(jī)配置為雙核CPUx2/4G內(nèi)存,JVM內(nèi)存堆棧為256M)、最后一種類型的數(shù)據(jù)同步,15w的數(shù)據(jù),在3分鐘內(nèi)可以完成。
8 / 11
三、案例
1,把172.17.100.1 中的ca_fwdj.tpf_txqdjb 數(shù)據(jù)同步到 172.16.1.199中的bank.tpf_txqdjb中。 6w級數(shù)據(jù)
2,把172.17.100.1 中的ca_fwdj.tpf_jcdjb 數(shù)據(jù)同步到 172.16.1.199中的bank.tpf_jcdjb中。 14w級數(shù)據(jù)
3,連接異構(gòu)數(shù)據(jù)庫,讀取MySql數(shù)據(jù)保存到Oracle數(shù)據(jù)庫中;如果數(shù)據(jù)轉(zhuǎn)換過程中有異常,可以記錄異常信息(可以記錄到文件或者數(shù)據(jù)中,通過二次開發(fā),可以實時以短信的形式提醒)
9 / 11
4,異常日志:
備注:
表輸入支持SQL讀取數(shù)據(jù),支持多表查詢。
10 / 11
四、【kettle】JDBC連接oracle報找不到驅(qū)動
初次接觸kettle,環(huán)境都配置好以后,啟動kettle的spoon,新建作業(yè),配置jdbc的oracle數(shù)據(jù)源連接,報找不到驅(qū)動。
解決辦法:
1、下載OJDBC14.jar包
2、將該包拷貝到kettle的 kettle\\pdi-ce-5.0.1.A-stable\\data-integration\\libswt或者kettle\\pdi-ce-5.0.1.A-stable\\data-integration\\lib 路徑下都可以。 3、重啟kettle,重新配置數(shù)據(jù)源連接。問題解
五、【kettle】JDBC連接mysql報找不到驅(qū)動
初次接觸kettle,環(huán)境都配置好以后,啟動kettle的spoon,新建作業(yè),配置jdbc的oracle數(shù)據(jù)源連接,報找不到驅(qū)動。
解決辦法:
1、下載mysql-connector-java-5.1.6-bin.jar包
2、將該包拷貝到kettle的 kettle\\pdi-ce-5.0.1.A-stable\\data-integration\\libswt或者kettle\\pdi-ce-5.0.1.A-stable\\data-integration\\lib 路徑下都可以。 3、重啟kettle,重新配置數(shù)據(jù)源連接。問題解
11 / 11
因篇幅問題不能全部顯示,請點此查看更多更全內(nèi)容
Copyright ? 2019- 91gzw.com 版權(quán)所有 湘ICP備2023023988號-2
違法及侵權(quán)請聯(lián)系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市萬商天勤律師事務(wù)所王興未律師提供法律服務(wù)