Kettle應用場景
- 示例1:將數(shù)據(jù)源A庫中的某張表的數(shù)據(jù)插入到數(shù)據(jù)庫B中。
- 示例2:將數(shù)據(jù)源A庫中的某張表的數(shù)據(jù)插入更新到數(shù)據(jù)庫B中。
- 示例3:將數(shù)據(jù)源A庫中的某張表或某幾個表中的字段合并后的數(shù)據(jù)插入到數(shù)據(jù)庫B中。
- 示例4:將數(shù)據(jù)源A庫中的某兩張或多張表級聯(lián)查詢的數(shù)據(jù)插入到數(shù)據(jù)庫B中的一張表中
在此,我們主要對示例2進行說明。
為方便演示,我們在數(shù)據(jù)庫A和數(shù)據(jù)庫B中分別創(chuàng)建表userA和表userB。最終目標為將數(shù)據(jù)表userA中的數(shù)據(jù)插入更新到數(shù)據(jù)表userB中。
create database testA;
use testA;
create table `userA`(
`id`int(10) primary key,
`name` varchar(50),
`age` int(3)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
insert into userA values(1,'張三',25);
insert into userA values(2,'李四',29);
insert into userA values(3,'王五',28);
insert into userA values(4,'趙六',28);
create database testB;
use testB;
create table `userB`(
`idB`int(10) primary key,
`nameB` varchar(50),
`ageB` int(3)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
insert into userB values(1,'張三',20);
insert into userB values(2,'李四',21);
insert into userB values(3,'王五',22);
操作步驟
1、運行軟件,進入主界面。點擊左上角的 文件 → 新建 → 轉(zhuǎn)換新建一個轉(zhuǎn)換,并保存,轉(zhuǎn)換的后綴名為ktr。
2、點擊面板左側(cè)的 主對象樹 ,選擇 DB連接 右鍵,選擇 新建 或 新建數(shù)據(jù)庫連接向?qū)?/strong> 分別創(chuàng)建對數(shù)據(jù)庫A和數(shù)據(jù)庫B的連接。
注意: 如果在點擊測試連接時出現(xiàn)下圖所示錯誤,檢查我們的安裝目錄下的lib中是否有對應數(shù)據(jù)庫連接的jar包文件(如mysql的jar文件:mysql-connector-java-5.1.6-bin.jar),下載對應的jar,放到lib文件夾下,重啟kettle軟件,即可。
3、點擊面板左側(cè)的 核心對象 ,選擇 輸入文件夾下的 表輸入 并把它拖到右側(cè)的編輯區(qū)中。
4、雙擊編輯區(qū)的“表輸入”圖標,編輯數(shù)據(jù)輸入源。
5、點擊面板左側(cè)的 核心對象 ,選擇 輸出文件夾下的 插入/更新 并把它拖到右側(cè)的編輯區(qū)中,按住 shift 畫線連接 “表輸入”。
6、雙擊編輯區(qū)的“插入/更新”圖標,編輯控件內(nèi)容。
用來查詢的關鍵字,此處只選擇主鍵id,表示這里按照id查詢,如果此id存在,則更新數(shù)據(jù),若不存在則插入數(shù)據(jù)。
7、到這里,我們最簡單的一個插入/更新數(shù)據(jù)的轉(zhuǎn)換已經(jīng)建立完成了,點擊“校驗這個轉(zhuǎn)換”,Kettle會校驗并給出簡單的報告。沒有任何問題。
8、點擊“運行這個轉(zhuǎn)換”,選擇“本地執(zhí)行”,點擊“啟動”來執(zhí)行這個轉(zhuǎn)換。
9、轉(zhuǎn)換成功后,我們可以在控制臺中看到如下信息。檢查本地數(shù)據(jù)庫,數(shù)據(jù)庫A的userA表中的數(shù)據(jù)已經(jīng)全部被插入更新到了數(shù)據(jù)庫B的userB表中。
注:此示例適用于插入和更新目標源數(shù)據(jù),無法將已經(jīng)源表中的刪除的記錄同步到目標表中
上一篇: Kettle入門之四 Kettle定時任務(后臺任務)
下一篇: Kettle入門之六 Kettle應用場景(字段合并)