kettle多個表一起遷移-通過配置文件配置需要同步的字段,非全字段同步
歡迎關注博主公眾號「Java大師」, 專注於分享Java領域干貨文章, 關注回復「999
」獲取本例源文件, 免費領取全網最熱的kettle實戰視頻教程 http://www.javaman.cn/kettle/kettle-column
本文主要講解將列配置在excel配置文件中,只同步所需要的字段,不需要進行表的全部字段同步!!
一、創建如下4張表,kettle結尾的表為目標表,非kettle結尾的表為源表
t_user2和t_user3兩張為待抽取的源數據表;t_user2_kettle和t_user3_kettle為目標表
-- Create table
create table T_USER_2
(
id NUMBER(5),
name NVARCHAR2(20),
password NVARCHAR2(30),
sex CHAR(2),
gxsj DATE
)
tablespace TEST
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 64K
next 1M
minextents 1
maxextents unlimited
);
-- Create table
create table T_USER_2_KETTLE
(
id NUMBER(5),
name NVARCHAR2(20),
password NVARCHAR2(30),
sex CHAR(2),
gxsj DATE
)
tablespace TEST
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 64K
next 1M
minextents 1
maxextents unlimited
);
-- Create table
create table T_USER_3
(
id NUMBER(5),
name NVARCHAR2(20),
password NVARCHAR2(30),
sex CHAR(2),
gxsj DATE
)
tablespace TEST
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 64K
next 1M
minextents 1
maxextents unlimited
);
-- Create table
create table T_USER_3_KETTLE
(
id NUMBER(5),
name NVARCHAR2(20),
password NVARCHAR2(30),
sex CHAR(2),
gxsj DATE
)
tablespace TEST
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 64K
next 1M
minextents 1
maxextents unlimited
);
二、整個作業流程如下圖所示:
下圖為整個作業的流程:包含start、獲取文件和循環處理表數據的作業流程
三、獲取文件.ktr
該轉換包含兩個控件:excel輸入控件和復制記錄到結果控件,將excel的數據讀取出來,放入復制記錄到結果中
1、獲取excel文件,復制記錄到結果中去
2、excel表的第一列為表頭:souce代表需要同步的表,target代表目標表,column代表同步的字段;第2行和第3行為需要同步的表數據;
四、循環處理.kjb
循環處理的作業流程如下:包含獲取表名和插入表兩個轉換;將步驟三的表名獲取出來放入循環處理.kjb的步驟中
此處需要注意鼠標左鍵雙擊循環處理.kjb,進入【高級】選項,勾選上【對每個輸入執行一次】的選項,點擊確定
![插入表
1、點擊鼠標右鍵,進入作業內部,可以看到作業包含兩個轉換,如下圖
2、鼠標左鍵選中2-1獲取表名,鼠標右鍵進入具體的步驟控件中,下面包含兩個控件:從結果獲取記錄和設置變量。
將獲取第一步的表名,設置到source、target和column變量中
2、2-2插入表.ktr
整個插入表的轉換如下圖,包含獲取源數據同步數據(實際是表輸入)和目標數據插入(表輸出),兩個控件
2.1、將變量替換到sql語句當中
輸入下圖中的sql語句,勾選上替換sql語句里的變量,點擊確定
該步驟是將上一步的結果放入變量中,進行變量替換,即達到讀取配置文件的目的
2.2、雙擊鼠標左鍵,進入目標數據庫數據插入控件內部,將變量替換到目標表當中,下圖中的{target}
為步驟三中獲取到的target,用花括號擴起來,否則不起作用,點擊確定進行保存
2.3、運行整個點擊執行,查看運行結果
3、運行結果查看
相應的數據同步到具體的表中,根據excel文件的配置可以看到user2和user3兩張表配置的字段不同,同步到目標表的數據就不相同
根據上述表查看,發現所選字段數據已經同步到表中,該表並非全表同步!