Kettle入門之七 Kettle應用場景(多表級聯)

Kettle應用場景

在此,我們主要對示例4進行說明绿聘。

為方便演示,我們在數據庫A中創(chuàng)建“用戶表”次舌、“商品表”斜友、“訂單表”,在數據庫B中創(chuàng)建“訂單詳細信息表”垃它。最終目標為根據用戶表鲜屏、商品表、訂單表獲取訂單詳細信息表国拇,最終目標結果如下洛史。

create database testA;
use testA;
-- 用戶表
create table `user`(
    `id`int(10) primary key,
    `name` varchar(50),
    `age` int(3)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

insert into user values(10001,'張三',20);
insert into user values(10002,'李四',25);
insert into user values(10003,'王五',22);

-- 商品表
create table `goods`(
    `id`int(10) primary key,
    `name` varchar(50),
    `price` float(16)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

insert into goods values(1000001,'蘋果',6.5);
insert into goods values(1000002,'橘子',2.5);
insert into goods values(1000003,'香蕉',1.5);

-- 訂單表
create table `order`(
    `id`int(10) primary key,
    `user_id` varchar(50),
    `goods_id` int(10)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

insert into `order` values(1,10001,1000001);
insert into `order` values(2,10001,1000002);
insert into `order` values(3,10003,1000001);
insert into `order` values(4,10003,1000001);
insert into `order` values(5,10002,1000002);
insert into `order` values(6,10002,1000003);


create database testB;
use testB;
-- 訂單詳情表
create table `order_detail`(
    `id`int(10) primary key,
    `user_name` varchar(50),
    `user_age` int(3),
    `goods_name` varchar(50),
    `goods_price` float(16)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

操作步驟

1、運行軟件酱吝,進入主界面也殖。點擊左上角的 文件 → 新建 → 轉換新建一個轉換,并保存,轉換的后綴名為ktr忆嗜。

2己儒、點擊面板左側的 主對象樹 ,選擇 DB連接 右鍵捆毫,選擇 新建新建數據庫連接向導 分別創(chuàng)建對數據庫A和數據庫B的連接闪湾。

選擇“新建”選項的操作視圖
選擇“新建數據庫連接向導”選項的操作視圖 1
選擇“新建數據庫連接向導”選項的操作視圖 2
選擇“新建數據庫連接向導”選項的操作視圖 3

注意: 如果在點擊測試連接時出現下圖所示錯誤,檢查我們的安裝目錄下的lib中是否有對應數據庫連接的jar包文件(如mysql的jar文件:mysql-connector-java-5.1.6-bin.jar)绩卤,下載對應的jar途样,放到lib文件夾下,重啟kettle軟件濒憋,即可何暇。

3、點擊面板左側的 核心對象 凛驮,選擇 輸入文件夾下的 表輸入 并把它拖到右側的編輯區(qū)中裆站。

4、雙擊編輯區(qū)的“表輸出”圖標黔夭,編輯數據輸入源遏插。此處為多表聯合查詢,所以表輸入我們配置的表為訂單表(關聯關系表)

5纠修、點擊面板左側的** 核心對象 ,選擇 查詢 ** 文件夾下的 ** 數據庫查詢 **厂僧,并把它拖到右側的編輯區(qū)中扣草,按住 shift 畫線連接 “表輸入”,如下圖颜屠。

6辰妙、雙擊編輯區(qū)的“數據庫查詢”,圖標甫窟,配置級聯查詢關系密浑。

  • 配置用戶表關聯查詢:
    (1)步驟名稱寫入“user”,數據庫連接選擇我們user表所在的數據庫粗井,如果數據源未配置尔破,可查看步驟2,進行配置浇衬。
    (2)選擇數據庫之后懒构,我們通過“表名”后的 “瀏覽”按鈕,選擇我們的關聯表“user”耘擂。
    (3)查詢所需關鍵胆剧,即為兩表之間的關聯字段,操作符根據需要醉冤,此處選擇 “=”秩霍。
    (4) 查詢表返回的值篙悯,即為我們需要通過關聯表“user”,獲取到的字段铃绒。
  • 類似的鸽照,我們按照上述方法,配置商品表關聯查詢匿垄。

7移宅、點擊面板左側的** 核心對象 ,選擇 輸出 ** 文件夾下的 ** 插入/更新 **椿疗,并把它拖到右側的編輯區(qū)中漏峰,按住 shift 畫線連接 “數據庫查詢”(goods),如下圖届榄。

8浅乔、雙擊右側編輯區(qū)的“查詢/更新”圖標,編輯輸出數據對應關系铝条。

用來查詢的關鍵字靖苇,此處只選擇主鍵id,表示這里按照id查詢班缰,如果此id存在贤壁,則更新數據,若不存在則插入數據埠忘。

9脾拆、到這里,我們最簡單的一個級聯查詢的轉換已經建立完成了莹妒,點擊“校驗這個轉換”名船,Kettle會校驗并給出簡單的報告斩箫。沒有任何問題梧油。

10、點擊“運行這個轉換”蔑穴,選擇“本地執(zhí)行”鉴腻,點擊“啟動”來執(zhí)行這個轉換迷扇。

11、轉換成功后爽哎,我們可以在控制臺中看到如下信息谋梭。檢查本地數據庫。

此時倦青,我們看到瓮床,雖然我們的數據已經成功提取了,但是中文部分出現了亂碼。
我們可以進入 主對象樹 → DB連接 → testA(數據源) ** 隘庄,雙擊“testA”踢步,選擇“高級”,在下方輸入 set names gbk;丑掺,設置編碼格式為gbk(此處為我本地環(huán)境問題需要設置為gbk編碼)获印,根據實際情況設置編碼格式

再次啟動這個轉換街州,我們可以看到兼丰,數據已經正常顯示。


注意:

  • “數據庫查詢”組件的作用是使用前面“表輸入”查詢到的一條或多條記錄再查詢其他表中的數據唆缴,其本質類似于我們常用的Master-Detail table query鳍征,在查詢到主表的某條記錄后,自動返回字表中匹配的記錄面徽。
  • “數據庫查詢”組件的作用相當于 左連接查詢 艳丛,我們使用時,需注意趟紊。

上一篇:Kettle入門之六 Kettle應用場景(字段合并)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末氮双,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子霎匈,更是在濱河造成了極大的恐慌戴差,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件铛嘱,死亡現場離奇詭異暖释,居然都是意外死亡,警方通過查閱死者的電腦和手機弄痹,發(fā)現死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來嵌器,“玉大人肛真,你說我怎么就攤上這事∷剑” “怎么了蚓让?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長讥珍。 經常有香客問我历极,道長,這世上最難降的妖魔是什么衷佃? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任趟卸,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘锄列。我一直安慰自己图云,他們只是感情好,可當我...
    茶點故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布邻邮。 她就那樣靜靜地躺著竣况,像睡著了一般。 火紅的嫁衣襯著肌膚如雪丹泉。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天鸭蛙,我揣著相機與錄音摹恨,去河邊找鬼。 笑死规惰,一個胖子當著我的面吹牛睬塌,可吹牛的內容都是我干的。 我是一名探鬼主播歇万,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼揩晴,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了贪磺?” 一聲冷哼從身側響起硫兰,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎寒锚,沒想到半個月后劫映,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡刹前,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年泳赋,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片喇喉。...
    茶點故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡祖今,死狀恐怖,靈堂內的尸體忽然破棺而出拣技,到底是詐尸還是另有隱情千诬,我是刑警寧澤,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布膏斤,位于F島的核電站徐绑,受9級特大地震影響,放射性物質發(fā)生泄漏莫辨。R本人自食惡果不足惜傲茄,卻給世界環(huán)境...
    茶點故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一毅访、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧烫幕,春花似錦俺抽、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至捷犹,卻和暖如春弛饭,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背萍歉。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工侣颂, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人枪孩。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓憔晒,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蔑舞。 傳聞我的和親對象是個殘疾皇子拒担,可洞房花燭夜當晚...
    茶點故事閱讀 45,675評論 2 359