




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、Kettle 開發(fā)使用手冊2 0 1 7 年 4 月版 本 歷 史 說 明版本作者日期備注1.0偉峰2017.04.111. Kettle 介紹1.1. 什么是KettleKettle是純Java編寫的、免費開源的ETL工具,主要用于抽取(Extraction)、轉(zhuǎn)換(Transformation)、和裝載(Loading)數(shù)據(jù)。Kettle中文名稱叫水壺,該項目的主程序員MATT 希望把各種數(shù)據(jù)放到一個壺里,然后以一種指定的格式流出。在這種思想的設(shè)計下, Kettle廣泛用于不同數(shù)據(jù)庫之間的數(shù)據(jù)抽取,例如Mysql數(shù)據(jù)庫的數(shù)據(jù)傳到Oracle,Oracle數(shù)據(jù)庫的數(shù)據(jù)傳到Greenplum數(shù)
2、據(jù)庫。1.2. Kettle的安裝Kettle 工具是不需要安裝的,直接網(wǎng)上下載解壓就可以運行了。不過它依賴于 Java,需要本地有 JDK 環(huán)境,如果是安裝 4.2 或 5.4 版本,JDK 需要 1.5 以上的版本,推薦 1.6 或 1.7 的 JDK。運行 Kettle 直接雙擊里面的批處理文件 spoon.bat 就行了,如圖 1.1 所示:圖 1.12. Kettle 腳本開發(fā)2.1. 建立資源庫(repository 倉庫)Repository 倉庫是用來存儲所有 kettle 文件的文件系統(tǒng),由于數(shù)據(jù)交換平臺服務(wù)器管理kettle 文件也是用Repository 倉庫,因此我們這
3、邊本地的 kettle 開發(fā)環(huán)境也是要用到該資源庫。建立資源庫的方式是工具 - 資源庫- - 連接資源庫,這時候彈出一個窗口,我們點擊右上角的“+”號,跟著點擊下面的 kettle file repository 選項,按確定,如圖 2.1 所示:圖 2.1跟著在右上角選擇一個目錄,建議在 kettle 路徑下新建 repository 文件夾,再選擇這個文件夾作為根目錄,名稱和描述可以任意寫,如圖 2.2 所示:圖 2.2建完后會 kettle 工具會自動連接到 repository 資源庫,每次打開 kettle 也會彈出一個窗口讓你先連接到資源庫。在連接到資源庫的情況下打開文件就是資源庫
4、所在目錄了,如圖 2.3 所示。注意你在資源庫建的目錄結(jié)構(gòu)要跟數(shù)據(jù)交換平臺的目錄結(jié)構(gòu)一致,這樣寫好 kettle 腳本,保存后放的路徑能跟交換平臺的目錄結(jié)構(gòu)一致了。圖 2.32.2. 在目標數(shù)據(jù)庫里新建表在做數(shù)據(jù)遷移的時候我們需要先在目標數(shù)據(jù)庫建立與源數(shù)據(jù)庫類似的表結(jié)構(gòu), 才能在這兩表之間做數(shù)據(jù)遷移, 以 oracle 數(shù)據(jù)庫到 gp 數(shù)據(jù)庫, T_SF_DWJFDJXX_TEST 表做數(shù)據(jù)遷移為例,我們先建類似的表結(jié)構(gòu),首先先把表結(jié)構(gòu)的代碼拷出來:create table T_SF_DWJFDJXX_TEST (NSRNBMNUMBER(10) not null, DWSBHVARCHAR2
5、(18) not null, JFDWNBMNUMBER(10) not null,HYFL_DMCHAR(1) not null, JFDWLX_DM CHAR(3) not null, SBJC_DMCHAR(2) not null, SBGLJG_DM VARCHAR2(11) not null, SWGLJG_DM VARCHAR2(11) not null,SBDJ_ZTCHAR(2) not null, DJSLRY_DM VARCHAR2(11), DJSL_RQDATE,LRRY_DM VARCHAR2(11), XGRY_DM VARCHAR2(11), DJ_RQ DATE
6、,DJJG_DM VARCHAR2(11), LR_SJ TIMESTAMP(6),XG_SJ TIMESTAMP(6),ZDFY_BJ CHAR(1),XMMCVARCHAR2(100), KNQYBZ_DM CHAR(1), ZDYCKJN_BJ CHAR(1), SJJHPT_SJ TIMESTAMP(6), SJJHPT_DZ NUMBER(14);跟著在這個表結(jié)構(gòu)的基礎(chǔ)上,在目標數(shù)據(jù)庫創(chuàng)建新表。需要注意的是, gp 數(shù)據(jù)庫的數(shù)據(jù)類型有些跟 oracle 的一樣,有些不同。相同的就不用改了,不同的就改下。以上面的數(shù)據(jù)類型為例,相同的有char、date、timestamp,不同的是 v
7、archar2 和 number,因此,varchar2(n)要改成 varchar(n),number(n)要改成 integer(注意不帶數(shù)字長度 n)。建完之后,我們就可以在這不同數(shù)據(jù)庫的兩表之間進行數(shù)據(jù)遷移或數(shù)據(jù)定時傳輸。2.3. 源數(shù)據(jù)庫和目標數(shù)據(jù)庫的 jndi 設(shè)置Jndi 是 kettle 連接數(shù)據(jù)庫的配置文件,相當于 oracle 的 tns。Jndi 設(shè)置的目錄是在kettle 目錄下的simple-jndi 文件夾里,打開后編輯 perties 來設(shè)置 jndi,下面附上公司揭陽涉稅項目 oracle 到 gp 數(shù)據(jù)庫的 jndi 設(shè)置,分別是源端 orac
8、le 數(shù)據(jù)庫和目標端 gp 數(shù)據(jù)庫。配置信息的斜杠左邊是 jndi 名, 這里 jndi 的命名規(guī)則是數(shù)據(jù)庫名_用戶名,注意本地的 jndi 名要跟交換平臺的jndi 名一致。配置信息的斜杠右邊分別是數(shù)據(jù)庫類型、驅(qū)動、數(shù)據(jù)庫地址、用戶名和密碼。注意,相同數(shù)據(jù)庫配置寫法相同,不同數(shù)據(jù)庫的配置寫法略有不同,像下面的oracle 和 gp 數(shù)據(jù)庫的 driver 和 url 地址寫法就不一樣。oracle_db_mhpt/type=javax.sql.DataSource oracle_db_mhpt/driver=oracle.jdbc.driver.OracleDriver oracle_db_
9、mhpt/url=jdbc:oracle:thin:1:1521:zrmhdb oracle_db_mhpt/user=db_mhptoracle_db_mhpt/password=DB_MHPTgp_public/type=javax.sql.DataSource gp_public/driver=org.postgresql.Driver gp_public/url=jdbc:postgresql:/65:5432/postgres gp_public/database=8gp_public/user=gpadmin gp_public/pass
10、word=gpadmin2.4. 寫 kettle 腳本Kettle 腳本有兩種,ktr 腳本跟 kjb 腳本,其中ktr 負責(zé)執(zhí)行,具體要做什么由 ktr 來負責(zé);kjb 負責(zé)調(diào)度,調(diào)用一個或多個 ktr。Ktr 和 kjb 的關(guān)系類似于像員工和領(lǐng)導(dǎo)之間,員工負責(zé)具體的事務(wù)操作,領(lǐng)導(dǎo)負責(zé)計劃安排工作。新建ktr 腳本可以點擊左上角的文件 - 新建 - 轉(zhuǎn)換,新建 kjb 腳本就文件 - 新建 - 作業(yè)。我們這里傳輸數(shù)據(jù)只要用到 kjb 腳本,一表的數(shù)據(jù)傳輸要有 1 個腳本。首先先新建一個 ktr 文件,如圖 2.4 所示,跟著我們按照主界面的提示拖動主鍵來操作。拖動組件在核心對象的組件庫里。
11、圖 2.4跟著我們需要 4 個組件,分別是獲取變量、表輸入、字符串操作、插入/更新,先從組件庫里找到這些組件然后拖動到右邊面板上,查找組件可以用組件名稱來在組建的搜索框里搜索。拖動后如圖 2.5 所示。圖 2.5然后給他們組件之間建立連接,用拉箭頭來連接即可,如圖 2.6 所示:圖 2.6組件之間連接完之后,跟著雙擊組件一個個編輯。第一步是獲取變量,在獲取變量前首先要設(shè)置入?yún)⒂脕慝@取變量,設(shè)置變量先雙擊主對象樹的 ktr 名(轉(zhuǎn)換 1 是未保存文件到本地的默認名),跟著設(shè)置命名參數(shù)。如圖 2.7 跟 2.8 所示。其中start_timestamp 和end_timestamp 這兩個是數(shù)據(jù)交
12、換平臺服務(wù)器上默認的用于增量抽取數(shù)據(jù)的兩個入?yún)?,分別表示數(shù)據(jù)開始時間跟數(shù)據(jù)結(jié)束時間。這里填上了默認值方便測試。圖 2.7圖 2.8設(shè)置入?yún)⒑笤倬庉嫬@取變量的組件,這里名稱跟入?yún)⒁粯樱琸ettle 變量名的寫法是$Variables,類型我們選擇 string,因為服務(wù)器上交換平臺傳進來的 start_timestamp 和 end_timestamp 參數(shù)也是 string 類型的,我們這里跟它一致。也如圖 2.9 所示:圖 2.9第二步是表輸入,首先要先連接數(shù)據(jù)庫,之前我們在本地文件上配置了 jndi, 這里 jndi 就用得上。新建或編輯數(shù)據(jù)庫連接,選擇好連接的數(shù)據(jù)庫,還有jndi 連接方
13、式,再填上 jndi 名稱和連接名稱,設(shè)置完了就點擊左下角的測試來測試本地能不能連上數(shù)據(jù)庫。連上了我們才做其他的步驟。圖 2.10連通好后,寫好 sql 語句。這里 sql 語句用到變量,kettle 變量的寫法是$variables,而使用變量要在左右兩端再加上單引號,變成 $variables。注意數(shù)據(jù)庫后臺的日期類型是 date,而變量是字符串類型,因此需要做個變量的類型轉(zhuǎn)換。因為有使用變量,所以需要勾上“替換 sql 語句里的變量”單選框。設(shè)置好后可以預(yù)覽下數(shù)據(jù)看下。圖 2.11第三步是字段去除左右空格,編輯“字符串操作”,點 get fields 獲取從上個步驟表表輸入獲取的字段名,
14、然后把 trim type 全部選擇 both,意思是去除字段左右兩端的空格。如果 get fields 得到的字段有 start_timestamp 和end_timestamp 這兩個,這兩個多余的,就刪去。如下圖所示:圖 2.12第四步是插入數(shù)據(jù)到目標端的新表,首先是要先連通目標端的數(shù)據(jù)庫。設(shè)置好后再點擊“測試”連通到目標端的數(shù)據(jù)庫。圖 2.13跟著是設(shè)置目標表(目標模式可以不填),點擊瀏覽選擇模式 /用戶下的數(shù)據(jù)庫表。然后設(shè)置每插入多少條數(shù)據(jù)提交的提交記錄數(shù)量,用來查詢的關(guān)鍵字選擇主鍵的字段,而更新字段是全部,點擊獲取字段即可。他這里操作的原理是: 如果目標表有符合該查詢的條件的記錄時
15、,那么更新此條數(shù)據(jù);不符合時,那么將源表的此條數(shù)據(jù)插入到目標表。圖 2.14這四個步驟編輯完成后最后就是執(zhí)行這四個步驟了,點擊左上角的運行圖標,設(shè)置時間參數(shù)或者時間參數(shù)按照默認值,運行后,如果全部組件都有綠色勾勾的標志的話說明全部運行成功,如下圖所示。如果某一個步驟失敗的話就是紅色勾勾的標志,這時候就要看日志或者步驟度量來分析了。從下面的步驟度量看表輸入有 1 條數(shù)據(jù)輸入進來,插入/更新步驟有 1 條數(shù)據(jù)寫進去了。圖 2.153. 在數(shù)據(jù)交換平臺設(shè)置定時任務(wù)以公司這邊的數(shù)據(jù)交換平臺為例(7:9001/WebContentadmin/admin),如果交換平臺的 jndi 設(shè)置沒有設(shè)置的話,那么要首先設(shè)置這樣跑 kettle 腳本的話才能連到數(shù)據(jù)庫,注意本地 kettle 的 jndi 名要跟交換平臺的 jndi 名一致,需要統(tǒng)一命名。圖 3.1跟著將腳本放上服務(wù)器,可以在頁面上上傳文件到服務(wù)器。圖 3.2上
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 上海市裝修設(shè)計合同范本
- 單片機原理與應(yīng)用試題含參考答案
- 買賣樓合同范本
- 三年級第二學(xué)期語文教學(xué)計劃
- 發(fā)票購銷合同范本
- 工業(yè)鍋爐司爐考試模擬題(附答案)
- 專利質(zhì)押服務(wù)合同范本
- 農(nóng)莊解除合同范本
- 印刷定采購合同范本
- 衛(wèi)浴銷售協(xié)議合同范例
- 最終版附件1:“跨學(xué)科主題學(xué)習(xí)”教學(xué)設(shè)計(2025年版)
- (2024)云南省公務(wù)員考試《行測》真題及答案解析
- 2022年“正確認識新疆四史”《民族團結(jié)鑄牢中華民族共同體意識》全文解讀
- 靜脈治療護理技術(shù)操作標準解讀
- DBJ 15-82-2011 蒸壓加氣混凝土砌塊自承重墻體技術(shù)規(guī)程
- 附件25:戶口登記非主項變更、更正告知承諾書
- 《民航旅客運輸》項目二課件
- 應(yīng)聘人員面試登記表
- 兩擋AMT換擋執(zhí)行機構(gòu)設(shè)計及仿真
- MBR系統(tǒng)運行技術(shù)手冊
- 學(xué)校中層干部民主測評表(一)
評論
0/150
提交評論