數據抽取工具Kettle使用

在我們開發的過程中,經常碰到多個系統之間需要相互抽取數據的問題,以往我們可以通過寫Webservices接口,或者FTP共享來完成,但是這樣會存在工作量大,不便於維護,性能不高的問題。今天介紹一款常用的數據抽取工具—-Kettle。
Kettle是一款國外開源的ETL工具,純Java編寫,可以在Window、Linux、Unix上運行,數據抽取高效穩定。下面我們使用一個Demo程序介紹下其常用組件。

需求

有一個社交類的產品,進行了一次架構變更,數據庫表結構模型發生變化了,從老系統升級到新系統時,要把老系統中數據遷移到新系統的數據庫裏。
下面我們拿羣組表數據做個Demo演示數據遷移過程。
1. 現狀:
老系統
羣組表:group
羣組成員表:user_group
新系統
羣組表:group_分表,
羣組成員表:group_members_分表
我的羣組表:mygroups_分表
2. 步驟邏輯梳理
old:老系統
new:新系統
查詢羣組(old)->創建羣組,羣組成員,我的羣組分表(new)->插入羣組數據(new)->插入羣組成員數據(new)

數據遷移

1.下載工具
http://community.pentaho.com/projects/data-integration/
下載完成後,解壓,打開Spoon.bat啓動

2.查詢羣組(old)- 表輸入
當我們需要查詢表數據時,需要用到表輸入組件這裏寫圖片描述
新建轉換,選擇 輸入->表輸入,雙擊 到 轉換畫板,打開輸入以下信息:
步驟名稱:步驟名稱標識,不能重複
數據庫連接: 要連接的數據庫,如果沒有,新建一個
SQL語句:輸入查詢SQL語句
下圖是我寫的
這裏寫圖片描述
這樣,我們查詢羣組表就寫好了

3.創建羣組分表(new) - SQL腳本
當我們要執行SQL時,可以使用SQL腳本組件這裏寫圖片描述
選擇 腳本-> 執行SQL腳本,雙擊 到 轉換畫板,打開輸入要執行的SQL語句,如下圖:
這裏寫圖片描述
這裏傳入了game_id作爲分表的參數,’tita_group_?’會被替換成’tita_group_gameid值’
記得選擇 “執行每一行”

4.字段值轉換 - 值映射組件 這裏寫圖片描述
由於羣組類型字段type發生了變化,原來是1,2,新系統是9,10,所以我要進行值得轉換,使用值映射組件
這裏寫圖片描述

5.插入羣組數據(new) - 表輸出
需要插入表數據時,使用 表輸出組件
選擇 輸出->表輸出,雙擊,打開,輸入 ”數據庫連接“,”目標表“,選擇 ”指定數據庫字段“,輸入 ”數據庫字段“ 映射,如下圖:
這裏寫圖片描述
”數據庫字段“ 映射,表字段:插入表字段,流字段:”上一步“的輸出字段,這樣運行遷移時,會將數據插入到對應的表字段裏

6.點擊運行按鈕這裏寫圖片描述,運行轉換,看到下圖,表示轉換完成
這裏寫圖片描述

7.羣組成員,我的羣組數據遷移跟上面步驟類似,不再重複說明,最終完成整個轉換如下圖:
這裏寫圖片描述

總之,學習的過程需要不斷實踐和反覆摸索,這只是Kettle一小部分知識,大家保持一顆學習的熱情,就不怕路遠。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章