1. 程式人生 > >Kettle學習筆記009之指令碼元件

Kettle學習筆記009之指令碼元件

主要介紹 【Java程式碼】元件,【SQL】元件,【Shell】元件

 

【Java程式碼】元件

序言:

【Java程式碼】元件是個自定義外掛,用於當Kettle內建的元件無法滿足需要的時候。

例項目標:把中文字串轉為拼音

第一步:將寫好的getPinYin方法整塊複製到processRow方法後面:

第二步:然後修改processRow方法裡面的/* TODO:部分,get(Fields.In, "name").getString(r),表示獲取資料流中指定的欄位資料;get(Fields.Out, "ename").setValue(r, ename)

,用於設定輸出欄位。還要在最上面匯入相關類,具體程式碼如下:

第三步:在最下面配置一下輸出欄位資訊,有幾個輸出欄位就需要配置幾行:

第四步:匯入依賴包,可以從程式碼中看出中文轉拼音我是用的pinyin4j,向kettle lib目錄下放入pinyin4j的jar包,然後重新啟動Spoon

【SQL】元件

(1) 作業中的SQL元件通常是用來執行DDL語句的。

例項:

第一步:建立作業

第二步:編輯元件

第三步:儲存,執行

【Shell】元件

(1)【Shell】元件是用來執行Windows下的批處理指令碼,即bat檔案。

例項:

第一步:建立作業

第二步:編輯元件

a.  勾選【插入指令碼】表示在該元件中寫指令碼,右側的【指令碼】選項卡即是寫指令碼的位置,若不勾選【插入指令碼】,則是通過執行指定指令碼檔案的方式。不建議勾選【插入指令碼】選項,因為勾選【插入指令碼】後,Kettle執行Shell的時候會先將指令碼內容寫到一個臨時批處理檔案中再去執行,很容易出現中文亂碼情況。

b.【指令碼檔名】配置項,用於指定批處理指令碼檔案位置,勾選【插入指令碼】後,該項不可配置。

c.【工作路徑】配置項,用於指定指令碼工作路徑,通俗的說,就是在哪個目錄下執行這個指令碼。

d.  最下面的【欄位】列表,用於配置指令碼入參,可以使用引數變數。

第三步:編寫指令碼檔案內容

::關閉回顯

@echo off

::進入指令碼所在目錄

cd  /D %~dp0

::在當前目錄建立資料夾ShellTest

mkdir  ShellTest

::複製指令碼檔案到ShellTest目錄

copy Shell-test.bat shellTest

echo %1> ShellTest\hello.txt

第四步:儲存執行。

提示:轉換-應用分組下有一個【執行SSH命令】的元件,是向Linux作業系統下遠端執行Linux Shell的,有興趣的可以去看看。