2016-12-02 81 views
0

我是使用Pentaho Spoon的新手。我在一個文件夾中有大約100個文本文件,其中沒有文件擴展名。我發現,如果我創建一個作業並逐個移動一個文件,那麼我可以簡單地重命名該文件,並在末尾添加一個.txt擴展名。我想要做的是創建一個經過並重命名每個文件並添加.txt擴展名的作業。我試過使用正則表達式,但似乎無法讓它工作,因爲沒有文件擴展名。 任何幫助將不勝感激。如何使用Pentaho Spoon重命名沒有擴展名的文件

回答

1

這是一個非常簡單的解決方案,但您需要使用轉換,因爲作業步驟不會這樣做,好嗎?

你需要進行如下操作:

enter image description here

獲取文件名:「*」只需添加您的文件夾和正則表達式(不包括雙引號),所以一切都是上市。檢查是否可以使用「顯示文件名(s)...」按鈕。

修改的Java腳本值:聲明一個new_filename var連接所需的擴展名。請記住在添加腳本以輸出新字段後單擊「獲取變量」。

var new_filename = filename + '.txt'; 

流程文件:選擇操作=移動和文件名/ new_filename作爲源/目標的文件名。

就是這樣!

+1

不知道我在幾個月前錯過了什麼,但只是檢查它,它的工作原理!謝謝! – FunkyLikeLeeDorsey

0

重命名一組文件是我不會使用Kettle的一件事。爲什麼不讓shell執行shell最擅長的功能?

rem example for Windows CMD shell 
ren absolute-path-to-folder\*. *.txt 

這可以通過使用Shell作業條目來完成,如果您在水壺中找到理由。

0

我見過「只使用shell腳本」的答案。如果您可以保證您的Kettle服務器與開發人員工作站位於相同的操作系統上,則工作良好。我處於Dev/Spoon實例爲Windows的環境中,但Prod/Kettle環境爲Linux,因此您無法編寫一個腳本文件來統一所有這些文件。

至於「你爲什麼要這樣做?」,我的場景是一個集成場景。我們正在使用Pentaho進行數據集成,但它是企業集成的另一種工具。我想要一個Pentaho Job來生成一個輸出文件,並且我希望我的Enterprise Integration工具能夠拿起文件並對它做些什麼,但是在Pentaho完成寫入文件之前不會。當Enterprise Integration解決方案識別文件存在時,重命名有助於避免競爭狀況,但Pentaho尚未完成編寫。

如果我可以重命名一組文件,例如從測試更改。 .csv.processing進行測試。 .csv,那麼Pentaho會先用.processing擴展名創建文件,然後在完成後刪除擴展名。正在尋找test。*。csv的企業集成解決方案在Pentaho重新命名之前不會開始處理文件。賓果,沒有比賽條件。

相關問題