1、同一數據庫兩表數據關聯更新java
實現效果:把stu1的數據按id同步到stu2,stu2有相同id則更新數據mysql
步驟:sql
1.在mysql中建立兩張表:數據庫
mysql>create database kettle;測試
mysql>use kettle;spa
mysql>create table stu1 (id int ,name varchar(20),age int);3d
mysql>create table stu2 (id int ,name varchar(20));code
2.往兩張表中插入一些數據:orm
mysql>insert into stu1 values(1001,’zhangsan’,20),(1002,’lisi’,18),(1003,’wangwu’,23);對象
mysql>insert into stu2 values(1001,’wukong’);
3.在kettle中新建轉換,點擊左上角文件—新建—轉換到核心對象界面,點擊輸入,找到表輸入拖拽到中間
4.雙擊表輸入,在數據庫鏈接中配置mysql數據庫鏈接(注意jar包mysql-connector-java-5.1.34-bin.jar要放在kettle的lib文件夾中)
輸入完信息後點擊測試,顯示正確鏈接。
5.sql語句中輸入select * from stu1;
點擊預覽能夠看到數據
6.在輸出中找到插入/更新組件拖拽到中間,點住表輸入shift+鼠標左鍵鏈接到插入/更新組件上
雙擊插入/更新,點擊目標表瀏覽,選擇stu2
點擊獲取字段獲取到3個字段
因爲stu1與stu2經過id關聯,故刪除name和age字段,而後點擊編輯映射,編輯2個表之間的映射
肯定後如圖:
更新處,修改id的屬性爲n,肯定。而後保存運行,到數據庫中查看結果。
最後生成了一個文件,以下:
2、使用做業執行生成的轉換文件
實現效果:使用做業執行「一」中的轉換,而且額外在表stu2中添加一條數據
步驟:
新建一個做業
點擊通用將start拖拽到做業中
將轉換拖拽過來,將start與轉換相鏈接
雙擊轉換,選擇以前作好的job
左側腳本中選擇sql組件拖拽過來並鏈接
新建鏈接配置mysql數據庫,並寫插入sql語句
肯定,保存job並執行
3、將A數據庫中的a表通過ETL過程導入B數據庫中
sql語句地址:https://pan.baidu.com/s/1Eba9TEO3UO9Fjaz522VONw
實現效果:將hr數據庫中的employees表,通過ETL過程,導入到scott數據庫中;將列FIRST_NAME和LAST_NAME相連,中間用空格隔開,取名爲「NAME」;將列PHONE_NUMBER中的區號加上括號(例如515.123.4567改成(515)123.4567),列名不變;在scott數據庫中,該表的列名不變,表名改成dw_dim_employees。
實現步驟:
1.雙擊桌面的 圖標進入到kettle的Transformation界面,雙擊轉換切換到操做界面
在覈心對象目錄樹下找到輸入,點擊前面的展開三角,找到表輸入組件拖入到右側工做區
一樣的在輸出中,找到表輸出拖入到右側工做區;在轉換中找到字段選擇拖入到右側工做區。
2.將這3個組件鏈接起來,先選中表輸入,Shift+鼠標左鍵拖拽到字段選擇上,再選中字段選擇一樣的Shift+鼠標左鍵拖拽到表輸出上並選定爲主輸出步驟。
3.雙擊表輸入,數據庫鏈接處點擊新建,鏈接名稱填寫hr,鏈接類型選擇mysql。。。與「上邊一中的操做一致」
4.點擊下面測試,彈出正確鏈接數據庫hr,點擊肯定保存設置
在表輸入的SQL框中輸入以下SQL語句
SELECT EMPLOYEE_ID, CONCAT(FIRST_NAME, ' ', LAST_NAME) AS NAME , EMAIL , CONCAT('(', SUBSTR(PHONE_NUMBER, 1, 3), ')', SUBSTR(PHONE_NUMBER, 5)) AS PHONE_NUMBER , HIRE_DATE, JOB_ID, SALARY, COMMISSION_PCT, NAGER_ID , DEPARTMENT_ID FROM employees
點擊預覽數據,確認無誤後點擊肯定關閉
5.雙擊字段選擇,點擊獲取選擇的字段,獲得10個字段後點擊肯定關閉
雙擊表輸出,依然在數據庫鏈接處點擊新建
在數據庫鏈接界面填入以下信息:回到表輸出界面,在目標表中填寫表名:dw_dim_employees,勾選指定數據庫字段,點擊下面數據庫字段點擊獲取字段。
點擊右下角SQL按鈕,點擊啓動
彈出保存提示,選擇是,找到一個文件路徑(如桌面/項目腳本),爲job起個名字
運行成功