1、下載kettle包,并解壓
2、安裝jdk,并配置java環(huán)境
a).打開(kāi)我的電腦--屬性--高級(jí)--環(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目錄的絕對(duì)路徑,添加到Path變量的值中,并使用半角的分號(hào)和已有的路徑進(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、啟動(dòng)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ù)常見(jiàn)的應(yīng)用場(chǎng)景包括以下4個(gè)種類型:
??只增加、無(wú)更新、無(wú)刪除 ??只更新、無(wú)增加、無(wú)刪除 ??增加+更新、無(wú)刪除 ??增加+更新+刪除
只增加、無(wú)更新、無(wú)刪除
對(duì)于這種只增加數(shù)據(jù)的情況,可細(xì)分為以下2種類型: 1) 基表存在更新字段。
通過(guò)獲取目標(biāo)表上最大的更新時(shí)間或最大ID,在“表輸入”步驟中加入條件只讀取新增的數(shù)據(jù)。
2) 基表不存在更新字段。 通過(guò)“插入/更新”步驟進(jìn)行插入。
插入/更新步驟選項(xiàng):
2 / 11
只更新、無(wú)增加、無(wú)刪除
通過(guò)“更新”步驟進(jìn)行更新。
3 / 11
更新選項(xiàng):
增加+更新、無(wú)刪除
通過(guò)“插入/更新”步驟進(jìn)行插入。
區(qū)別是“插入/更新步驟”中的選項(xiàng),去掉“不執(zhí)行任何更新”的勾選:
4 / 11
增加+更新+刪除
這種數(shù)據(jù)同步情況,可細(xì)分為以下2種情況: 1) 源庫(kù)有表保存刪除、更新和新增的信息。
通過(guò)條件判斷,分別進(jìn)行“插入/更新”和“刪除”即可,如下圖所示。
5 / 11
2) 源庫(kù)沒(méi)有保存增刪改信息
Kettle提供了一種對(duì)比增量更新的機(jī)制處理這種情況,可通過(guò)“合并記錄”步驟實(shí)現(xiàn),該步驟的輸入是新舊兩個(gè)數(shù)據(jù)源,通過(guò)關(guān)鍵字進(jìn)行數(shù)據(jù)值比對(duì),對(duì)比結(jié)果分為以下4種類型:
“Identical”: 關(guān)鍵字在新舊數(shù)據(jù)源中都存在,域值相同 “changed”: 關(guān)鍵字在新舊數(shù)據(jù)源中都存在,但域值不同 “new”: 舊數(shù)據(jù)源中沒(méi)有找到關(guān)鍵字 “deleted”: 新數(shù)據(jù)源中沒(méi)有找到關(guān)鍵字
兩個(gè)數(shù)據(jù)源的數(shù)據(jù)都進(jìn)入下一步驟,上述4種結(jié)果類型作為輸出表的標(biāo)志字段進(jìn)行保存。
以下為示例:
??源數(shù)據(jù)庫(kù)測(cè)試腳本
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ù)庫(kù)測(cè)試腳本
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; 合并過(guò)程如下:
其中“合并記錄”步驟的選項(xiàng):
執(zhí)行后,查詢K1_TEST結(jié)果如下:
7 / 11
可以看到,該結(jié)果表的BZ字段保存了更新、刪除、新增的記錄信息,通過(guò)條件分支即可分別對(duì)這些記錄進(jìn)行相應(yīng)的處理。
“條件”選項(xiàng):
小結(jié)
Kettle提供了可視化的設(shè)計(jì)工具,基本上可通過(guò)拖拉配置的方式實(shí)現(xiàn)以上4種類型的數(shù)據(jù)同步,操作上相對(duì)較為簡(jiǎn)單。
數(shù)據(jù)同步的性能與源數(shù)據(jù)庫(kù)、目標(biāo)數(shù)據(jù)庫(kù)以及執(zhí)行Kettle轉(zhuǎn)換操作的主機(jī)相關(guān),在筆者的測(cè)試環(huán)境上(源數(shù)據(jù)庫(kù)和目標(biāo)數(shù)據(jù)庫(kù)部署在雙核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級(jí)數(shù)據(jù)
2,把172.17.100.1 中的ca_fwdj.tpf_jcdjb 數(shù)據(jù)同步到 172.16.1.199中的bank.tpf_jcdjb中。 14w級(jí)數(shù)據(jù)
3,連接異構(gòu)數(shù)據(jù)庫(kù),讀取MySql數(shù)據(jù)保存到Oracle數(shù)據(jù)庫(kù)中;如果數(shù)據(jù)轉(zhuǎn)換過(guò)程中有異常,可以記錄異常信息(可以記錄到文件或者數(shù)據(jù)中,通過(guò)二次開(kāi)發(fā),可以實(shí)時(shí)以短信的形式提醒)
9 / 11
4,異常日志:
備注:
表輸入支持SQL讀取數(shù)據(jù),支持多表查詢。
10 / 11
四、【kettle】JDBC連接oracle報(bào)找不到驅(qū)動(dòng)
初次接觸kettle,環(huán)境都配置好以后,啟動(dòng)kettle的spoon,新建作業(yè),配置jdbc的oracle數(shù)據(jù)源連接,報(bào)找不到驅(qū)動(dòng)。
解決辦法:
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ù)源連接。問(wèn)題解
五、【kettle】JDBC連接mysql報(bào)找不到驅(qū)動(dòng)
初次接觸kettle,環(huán)境都配置好以后,啟動(dòng)kettle的spoon,新建作業(yè),配置jdbc的oracle數(shù)據(jù)源連接,報(bào)找不到驅(qū)動(dòng)。
解決辦法:
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ù)源連接。問(wèn)題解
11 / 11
因篇幅問(wèn)題不能全部顯示,請(qǐng)點(diǎn)此查看更多更全內(nèi)容
Copyright ? 2019- 91gzw.com 版權(quán)所有 湘ICP備2023023988號(hào)-2
違法及侵權(quán)請(qǐng)聯(lián)系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市萬(wàn)商天勤律師事務(wù)所王興未律師提供法律服務(wù)