Kettle開發(fā)使用基礎(chǔ)手冊(cè)_第1頁
Kettle開發(fā)使用基礎(chǔ)手冊(cè)_第2頁
Kettle開發(fā)使用基礎(chǔ)手冊(cè)_第3頁
Kettle開發(fā)使用基礎(chǔ)手冊(cè)_第4頁
Kettle開發(fā)使用基礎(chǔ)手冊(cè)_第5頁
已閱讀5頁,還剩14頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

Kettle開發(fā)使用手冊(cè)4月版本歷史說明版本作者日期備注1.0彭偉峰.04.11

Kettle介紹什么是KettleKettle是純Java編寫、無償開源ETL工具,關(guān)鍵用于抽取(Extraction)、轉(zhuǎn)換(Transformation)、和裝載(Loading)數(shù)據(jù)。Kettle漢字名稱叫水壺,該項(xiàng)目標(biāo)主程序員MATT期望把多種數(shù)據(jù)放到一個(gè)壺里,然后以一個(gè)指定格式流出。在這種思想設(shè)計(jì)下,Kettle廣泛用于不一樣數(shù)據(jù)庫之間數(shù)據(jù)抽取,比如Mysql數(shù)據(jù)庫數(shù)據(jù)傳到Oracle,Oracle數(shù)據(jù)庫數(shù)據(jù)傳到Greenplum數(shù)據(jù)庫。Kettle安裝Kettle工具是不需要安裝,直接網(wǎng)上下載解壓就能夠運(yùn)行了。不過它依靠于Java,需要當(dāng)?shù)赜蠮DK環(huán)境,假如是安裝4.2或5.4版本,JDK需要1.5以上版本,推薦1.6或1.7JDK。運(yùn)行Kettle直接雙擊里面批處理文件spoon.bat就行了,圖1.1所表示:圖1.1Kettle腳本開發(fā)建立資源庫(repository倉庫)Repository倉庫是用來存放全部kettle文件文件系統(tǒng),因?yàn)閿?shù)據(jù)交換平臺(tái)服務(wù)器管理kettle文件也是用Repository倉庫,所以我們這邊當(dāng)?shù)豮ettle開發(fā)環(huán)境也是要用到該資源庫。建立資源庫方法是工具-->資源庫-->連接資源庫,這時(shí)候彈出一個(gè)窗口,我們點(diǎn)擊右上角“+”號(hào),跟著點(diǎn)擊下面kettlefilerepository選項(xiàng),按確定,圖2.1所表示:圖2.1跟著在右上角選擇一個(gè)目錄,提議在kettle路徑下新建repository文件夾,再選擇這個(gè)文件夾作為根目錄,名稱和描述能夠任意寫,圖2.2所表示:圖2.2建完后會(huì)kettle工具會(huì)自動(dòng)連接到repository資源庫,每次打開kettle也會(huì)彈出一個(gè)窗口讓你先連接到資源庫。在連接到資源庫情況下打開文件就是資源庫所在目錄了,圖2.3所表示。注意你在資源庫建目錄結(jié)構(gòu)要跟數(shù)據(jù)交換平臺(tái)目錄結(jié)構(gòu)一致,這么寫好kettle腳本,保留后放路徑能跟交換平臺(tái)目錄結(jié)構(gòu)一致了。圖2.3在目標(biāo)數(shù)據(jù)庫里新建表在做數(shù)據(jù)遷移時(shí)候我們需要先在目標(biāo)數(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)代碼拷出來:createtableT_SF_DWJFDJXX_TEST(NSRNBMNUMBER(10)notnull,DWSBHVARCHAR2(18)notnull,JFDWNBMNUMBER(10)notnull,HYFL_DMCHAR(1)notnull,JFDWLX_DMCHAR(3)notnull,SBJC_DMCHAR(2)notnull,SBGLJG_DMVARCHAR2(11)notnull,SWGLJG_DMVARCHAR2(11)notnull,SBDJ_ZTCHAR(2)notnull,DJSLRY_DMVARCHAR2(11),DJSL_RQDATE,LRRY_DMVARCHAR2(11),XGRY_DMVARCHAR2(11),DJ_RQDATE,DJJG_DMVARCHAR2(11),LR_SJTIMESTAMP(6),XG_SJTIMESTAMP(6),ZDFY_BJCHAR(1),XMMCVARCHAR2(100),KNQYBZ_DMCHAR(1),ZDYCKJN_BJCHAR(1),SJJHPT_SJTIMESTAMP(6),SJJHPT_DZNUMBER(14));跟著在這個(gè)表結(jié)構(gòu)基礎(chǔ)上,在目標(biāo)數(shù)據(jù)庫創(chuàng)建新表。需要注意是,gp數(shù)據(jù)庫數(shù)據(jù)類型有些跟oracle一樣,有些不一樣。相同就不用改了,不一樣就改下。以上面數(shù)據(jù)類型為例,相同有char、date、timestamp,不一樣是varchar2和number,所以,varchar2(n)要改成varchar(n),number(n)要改成integer(注意不帶數(shù)字長(zhǎng)度n)。建完以后,我們就能夠在這不一樣數(shù)據(jù)庫兩張表之間進(jìn)行數(shù)據(jù)遷移或數(shù)據(jù)定時(shí)傳輸。源數(shù)據(jù)庫和目標(biāo)數(shù)據(jù)庫jndi設(shè)置Jndi是kettle連接數(shù)據(jù)庫配置文件,相當(dāng)于oracletns。Jndi設(shè)置目錄是在kettle目錄下simple-jndi文件夾里,打開后編輯perties來設(shè)置jndi,下面附上企業(yè)揭陽涉稅項(xiàng)目oracle到gp數(shù)據(jù)庫jndi設(shè)置,分別是源端oracle數(shù)據(jù)庫和目標(biāo)端gp數(shù)據(jù)庫。配置信息斜杠左邊是jndi名,這里jndi命名規(guī)則是數(shù)據(jù)庫名_用戶名,注意當(dāng)?shù)豭ndi名要跟交換平臺(tái)jndi名一致。配置信息斜杠右邊分別是數(shù)據(jù)庫類型、驅(qū)動(dòng)、數(shù)據(jù)庫地址、用戶名和密碼。注意,相同數(shù)據(jù)庫配置寫法相同,不一樣數(shù)據(jù)庫配置寫法略有不一樣,像下面oracle和gp數(shù)據(jù)庫driver和url地址寫法就不一樣。oracle_db_mhpt/type=javax.sql.DataSourceoracle_db_mhpt/driver=oracle.jdbc.driver.OracleDriveroracle_db_mhpt/url=jdbc:oracle:thin:@1:1521:zrmhdboracle_db_mhpt/user=db_mhptoracle_db_mhpt/password=DB_MHPTgp_public/type=javax.sql.DataSourcegp_public/driver=org.postgresql.Drivergp_public/url=jdbc:postgresql://65:5432/postgresgp_public/database=8gp_public/user=gpadmingp_public/password=gpadmin寫kettle腳本Kettle腳本有兩種,ktr腳本跟kjb腳本,其中ktr負(fù)責(zé)實(shí)施,具體要做什么由ktr來負(fù)責(zé);kjb負(fù)責(zé)調(diào)度,調(diào)用一個(gè)或多個(gè)ktr。Ktr和kjb關(guān)系類似于像職員和領(lǐng)導(dǎo)之間,職員負(fù)責(zé)具體事務(wù)操作,領(lǐng)導(dǎo)負(fù)責(zé)計(jì)劃安排工作。新建ktr腳本能夠點(diǎn)擊左上角文件-->新建-->轉(zhuǎn)換,新建kjb腳本就文件-->新建-->作業(yè)。我們這里傳輸數(shù)據(jù)只要用到kjb腳本,一張表數(shù)據(jù)傳輸要有1個(gè)腳本。首先先新建一個(gè)ktr文件,圖2.4所表示,跟著我們根據(jù)主界面提醒拖動(dòng)主鍵來操作。拖動(dòng)組件在關(guān)鍵對(duì)象組件庫里。圖2.4跟著我們需要4個(gè)組件,分別是獲取變量、表輸入、字符串操作、插入/更新,先從組件庫里找到這些組件然后拖動(dòng)到右邊面板上,查找組件能夠用組件名稱來在組建搜索框里搜索。拖動(dòng)后圖2.5所表示。圖2.5然后給她們組件之間建立連接,用拉箭頭來連接即可,圖2.6所表示:圖2.6組件之間連接完以后,跟著雙擊組件一個(gè)個(gè)編輯。第一步是獲取變量,在獲取變量前首先要設(shè)置入?yún)⒂脕慝@取變量,設(shè)置變量先雙擊主對(duì)象樹ktr名(轉(zhuǎn)換1是未保留文件到當(dāng)?shù)啬J(rèn)名),跟著設(shè)置命名參數(shù)。圖2.7跟2.8所表示。其中start_timestamp和end_timestamp這兩個(gè)是數(shù)據(jù)交換平臺(tái)服務(wù)器上默認(rèn)用于增量抽取數(shù)據(jù)兩個(gè)入?yún)?,分別表示數(shù)據(jù)開始時(shí)間跟數(shù)據(jù)結(jié)束時(shí)間。這里填上了默認(rèn)值方便測(cè)試。圖2.7圖2.8設(shè)置入?yún)⒑笤倬庉嫬@取變量組件,這里名稱跟入?yún)⒁粯?,kettle變量名寫法是${Variables},類型我們選擇string,因?yàn)榉?wù)器上交換平臺(tái)傳進(jìn)來start_timestamp和end_timestamp參數(shù)也是string類型,我們這里跟它一致。也圖2.9所表示:圖2.9第二步是表輸入,首先要先連接數(shù)據(jù)庫,之前我們?cè)诋?dāng)?shù)匚募吓渲昧薺ndi,這里jndi就用得上。新建或編輯數(shù)據(jù)庫連接,選擇好連接數(shù)據(jù)庫,還有jndi連接方法,再填上jndi名稱和連接名稱,設(shè)置完了就點(diǎn)擊左下角測(cè)試來測(cè)試當(dāng)?shù)啬懿荒苓B上數(shù)據(jù)庫。連上了我們才做其它步驟。圖2.10連通好后,寫好sql語句。這里sql語句用到變量,kettle變量寫法是${variables},而使用變量要在左右兩端再加上單引號(hào),變成’${variables}’。注意數(shù)據(jù)庫后臺(tái)日期類型是date,而變量是字符串類型,所以需要做個(gè)變量類型轉(zhuǎn)換。因?yàn)橛惺褂米兞?,所以需要勾上“替換sql語句里變量”單選框。設(shè)置好后能夠預(yù)覽下數(shù)據(jù)看下。圖2.11第三步是字段去除左右空格,編輯“字符串操作”,點(diǎn)getfields獲取從上個(gè)步驟表表輸入獲取字段名,然后把trimtype全部選擇both,意思是去除字段左右兩端空格。假如getfields得到字段有start_timestamp和end_timestamp這兩個(gè),這兩個(gè)多出,就刪去。以下圖所表示:圖2.12第四步是插入數(shù)據(jù)到目標(biāo)端新表,首先是要先連通目標(biāo)端數(shù)據(jù)庫。設(shè)置好后再點(diǎn)擊“測(cè)試”連通到目標(biāo)端數(shù)據(jù)庫。圖2.13跟著是設(shè)置目標(biāo)表(目標(biāo)模式能夠不填),點(diǎn)擊瀏覽選擇模式/用戶下數(shù)據(jù)庫表。然后設(shè)置每插入多少條數(shù)據(jù)提交提交統(tǒng)計(jì)數(shù)量,用來查詢關(guān)鍵字選擇主鍵字段,而更新字段是全部,點(diǎn)擊獲取字段即可。她這里操作原理是:假如目標(biāo)表有符合該查詢條件統(tǒng)計(jì)時(shí),那么更新此條數(shù)據(jù);不符合時(shí),那么將源表此條數(shù)據(jù)插入到目標(biāo)表。圖2.14這四個(gè)步驟編輯完成后最終就是實(shí)施這四個(gè)步驟了,點(diǎn)擊左上角運(yùn)行圖標(biāo),設(shè)置時(shí)間參數(shù)或時(shí)間參數(shù)根據(jù)默認(rèn)值,運(yùn)行后,假如全部組件全部有綠色勾勾標(biāo)志話說明全部運(yùn)行成功,以下圖所表示。假如某一個(gè)步驟失敗話就是紅色勾勾標(biāo)志,這時(shí)候就要看日志或步驟度量來分析了。從下面步驟度量看表輸入有1條數(shù)據(jù)輸入進(jìn)來,插入/更新步驟有1條數(shù)據(jù)寫進(jìn)去了。圖2.15

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論