kettle 實用小功能(二),讀取一個目錄下文字檔案的內容

PDI發表於2010-05-19

kettle 的實用小功能 中介紹瞭如何批次讀取二進位制檔案的內容,這裡說一下批次讀取文字檔案的方法。

第一步也是使用 Get File Names 步驟,根據正規表示式來獲取一個路徑下所有指定的檔名。

第二步驟使用 modified javascript 指令碼步驟,來讀取這些指定的文字檔案,指令碼如下。

[@more@]

//code begin

file = new Packages.java.io.File(filename.getString());
fileInputStream = new Packages.java.io.FileInputStream(file);
reader = new Packages.java.io.InputStreamReader(fileInputStream);

var cbuf = Packages.com.xgn.ketl.trans.step.infoextractor.InfoExtractor.createCharArray(1024);
var content= new String("");
length = reader.read(cbuf,0,1024);

while (length >0)
{
content += new Packages.java.lang.String(cbuf)
length = reader.read(cbuf,0,1024);
}
////code end

指令碼比較簡單就是讀取文字檔案內容,把檔案內容放在content 欄位裡。其中大家有有點費解的可能是下面這句:

var cbuf = Packages.com.xgn.ketl.trans.step.infoextractor.InfoExtractor.createCharArray(1024);

這裡使用了一個類的靜態方法,這個靜態方法的定義如下:

public static char[] createCharArray(int length)
{
return new char[length];
}

實際就是返回一個char陣列,因為我不知道如何在 sciprt 裡定義一個 char 陣列,就用這個方法繞過去了,有知道的朋友請告訴我。

另外要注意,modified javascript 步驟裡要選中 “compatbility mode”,content 作為新增加的輸出欄位。

經過上述兩步,檔名和檔案內容就都儲存在資料行裡了。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14366449/viewspace-1033704/,如需轉載,請註明出處,否則將追究法律責任。

相關文章