在【數(shù)據(jù)整合】Kettle 應(yīng)用之一 介紹治力、安裝中我們已經(jīng)介紹了如何安裝Kettle工具∶擅耄現(xiàn)在我們開(kāi)始使用Kettle。
Kettle應(yīng)用場(chǎng)景
- 示例1:將數(shù)據(jù)源A庫(kù)中的某張表的數(shù)據(jù)插入到數(shù)據(jù)庫(kù)B中宵统。
- 示例2:將數(shù)據(jù)源A庫(kù)中的某張表的數(shù)據(jù)插入更新到數(shù)據(jù)庫(kù)B中晕讲。
- 示例3:將數(shù)據(jù)源A庫(kù)中的某張表或某幾個(gè)表中的字段合并后的數(shù)據(jù)插入到數(shù)據(jù)庫(kù)B中。
- 示例4:將數(shù)據(jù)源A庫(kù)中的某兩張或多張表級(jí)聯(lián)查詢(xún)的數(shù)據(jù)插入到數(shù)據(jù)庫(kù)B中的一張表中
在此马澈,我們主要對(duì)示例1進(jìn)行說(shuō)明瓢省。
為方便演示,我們?cè)跀?shù)據(jù)庫(kù)A和數(shù)據(jù)庫(kù)B中分別創(chuàng)建表userA和表userB痊班。最終目標(biāo)為將數(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,'張三',20);
insert into userA values(2,'李四',21);
insert into userA values(3,'王五',22);
create database testB;
use testB;
create table `userB`(
`idB`int(10) primary key,
`nameB` varchar(50),
`ageB` int(3)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
操作步驟
1、運(yùn)行軟件涤伐,進(jìn)入主界面馒胆。點(diǎn)擊左上角的 文件 → 新建 → 轉(zhuǎn)換新建一個(gè)轉(zhuǎn)換缨称,并保存,轉(zhuǎn)換的后綴名為ktr祝迂。
2睦尽、點(diǎn)擊面板左側(cè)的 主對(duì)象樹(shù) ,選擇 DB連接 右鍵型雳,選擇 新建 或 新建數(shù)據(jù)庫(kù)連接向?qū)?/strong> 分別創(chuàng)建對(duì)數(shù)據(jù)庫(kù)A和數(shù)據(jù)庫(kù)B的連接当凡。
注意: 如果在點(diǎn)擊測(cè)試連接時(shí)出現(xiàn)下圖所示錯(cuò)誤,檢查我們的安裝目錄下的lib中是否有對(duì)應(yīng)數(shù)據(jù)庫(kù)連接的jar包文件(如mysql的jar文件:mysql-connector-java-5.1.6-bin.jar)纠俭,下載對(duì)應(yīng)的jar沿量,放到lib文件夾下,重啟kettle軟件冤荆,即可朴则。
3、點(diǎn)擊面板左側(cè)的 核心對(duì)象 匙赞,選擇 輸入文件夾下的 表輸入 并把它拖到右側(cè)的編輯區(qū)中佛掖。
4、雙擊編輯區(qū)的“表輸入”圖標(biāo)涌庭,編輯數(shù)據(jù)輸入源芥被。
5、點(diǎn)擊面板左側(cè)的 核心對(duì)象 坐榆,選擇 轉(zhuǎn)換文件夾下的 字段選擇 并把它拖到右側(cè)的編輯區(qū)中拴魄。
6、按住 shift 同時(shí)鼠標(biāo)從 “testA表輸入”到“字段選擇”畫(huà)一條連接線席镀。
7匹中、雙擊編輯區(qū)的“字段選擇”,選擇“元數(shù)據(jù)”面板豪诲,點(diǎn)擊右側(cè)“獲取改變的字段”顶捷,將自動(dòng)列出輸入表中所有字段。根據(jù)要抽取的目標(biāo)表中的字段名屎篱,給每一個(gè)輸入字段修改為對(duì)應(yīng)的輸出字段服赎。
注意:此時(shí)必須在Encoding欄中選擇輸出庫(kù)的編碼格式
8、點(diǎn)擊面板左側(cè)的 核心對(duì)象 交播,選擇 輸出文件夾下的 表輸出 并把它拖到右側(cè)的編輯區(qū)中重虑,按住 shift 劃線連接 “字段選擇”。
9秦士、雙擊編輯區(qū)的“表輸出”圖標(biāo)缺厉,編輯數(shù)據(jù)輸出目標(biāo)。
10、然后勾選 指定數(shù)據(jù)庫(kù)字段 提针,選擇 數(shù)據(jù)庫(kù)字段 命爬,點(diǎn)擊 輸入字段映射,映射輸入輸出關(guān)系辐脖。
注意:如果在點(diǎn)擊 輸入字段映射 時(shí)遇骑,提示如下錯(cuò)誤:
檢查我們的數(shù)據(jù)庫(kù)驅(qū)動(dòng)jar包版本 mysql-connector-java-5.1.6-bin.jar , 因?yàn)闇y(cè)試數(shù)據(jù)庫(kù)版本為 MySQL 6.3 , 而使用此版本的數(shù)據(jù)庫(kù)驅(qū)動(dòng)包揖曾,會(huì)在創(chuàng)建數(shù)據(jù)庫(kù)連接的時(shí)候發(fā)送測(cè)試語(yǔ)句 SET OPTION SQL_SELECT_LIMIT=DEFAULT , 但是5.6及以后的版本都不再支持SET...亥啦,此時(shí)炭剪,我們只需要將驅(qū)動(dòng)版本升級(jí),只需要將數(shù)據(jù)庫(kù)驅(qū)動(dòng)版本修改為5.1.22以上即可翔脱。
11奴拦、因?yàn)槲覀冊(cè)凇白侄芜x擇”中修改了每個(gè)輸入字段對(duì)應(yīng)的輸出字段的名稱(chēng),此處届吁,我們點(diǎn)擊 猜一猜 错妖,將會(huì)自動(dòng)根據(jù)字段近似度自動(dòng)匹配映射關(guān)系。
12疚沐、到這里暂氯,我們最簡(jiǎn)單的一個(gè)提取數(shù)據(jù)的轉(zhuǎn)換已經(jīng)建立完成了,點(diǎn)擊“校驗(yàn)這個(gè)轉(zhuǎn)換”亮蛔,Kettle會(huì)校驗(yàn)并給出簡(jiǎn)單的報(bào)告痴施。沒(méi)有任何問(wèn)題。
13究流、點(diǎn)擊“運(yùn)行這個(gè)轉(zhuǎn)換”辣吃,選擇“本地執(zhí)行”,點(diǎn)擊“啟動(dòng)”來(lái)執(zhí)行這個(gè)轉(zhuǎn)換芬探。
14神得、轉(zhuǎn)換成功后,我們可以在控制臺(tái)中看到如下信息偷仿。檢查本地?cái)?shù)據(jù)庫(kù)哩簿,數(shù)據(jù)庫(kù)A的userA表中的數(shù)據(jù)已經(jīng)全部被導(dǎo)入到了數(shù)據(jù)庫(kù)B的userB表中。
注:此示例只適用于目標(biāo)表為空炎疆,或者目標(biāo)表與源表沒(méi)有主鍵沖突的情況
上一篇: Kettle入門(mén)之一 介紹卡骂、安裝
下一篇: Kettle入門(mén)之三 Kettle定時(shí)任務(wù)(GUI)