2014-02-17 46 views
1

我們有一個文件寫入到一個特定的文件夾中,需要連續運行一個生產過程中,我們通過一個使用了Talend讀取文件之一,有2個問題:了Talend tWaitForFile不全

  • 第1:tWaitForFile閱讀只有在其開始之前存在的文件,因此在組件啓動後創建的文件對其不可見。
  • 第二種:無法知道該文件是否由生產者進程釋放,可能在未完全寫入時讀取該文件,tWaitForFile的參數_wait_release_在Linux系統上不起作用!

那麼如何才能讓Talend從一個文件數量增加的目錄讀取完整的文件?

回答

2

我不確定你的第一個問題是什麼意思。 tWaitForFile具有在文件夾中創建,修改或刪除文件時觸發的選項。

至於第二個問題,這裏最好的選擇是文件生產者創建一個OK或控制文件,當它完成了你想要的文件的寫入時,它是一個0字節的觸摸。

在這種情況下,您只需查找OK文件的外觀,然後選取相關的完成文件。如果您將兩個文件命名爲相同但文件擴展名不同(OK文件通常被稱爲「.OK」,那麼這應該很容易查找。因此,您將設置您的tWaitForFile以查找「* .OK」文件然後這個(你想拿起一個分隔符的文本文件中的情況下),然後申報文件名連接到一個迭代的tFileInputDelimited爲((String)globalMap.get("tWaitForFile_1_CREATED_FILE")).substring(0,((String)globalMap.get("tWaitForFile_1_CREATED_FILE")).length()-3) + ".txt"

我已經包括了一些截圖,以幫助您在下面:

Job Setup

tWaitForFile configuration

enter image description here

+0

謝謝你回覆,對於第二個問題:我們只能處理生產者進程的輸出文件夾。第一個問題:我連接了一個twaitforfile和一個顯示創建的文件的tjava,而運行的作業我已經將一些文件粘貼到包含在開始的4個文件的文件夾中,當作業完成時,控制檯顯示4個文件和儘可能多的新文件,它重複第4個的名稱, ![請檢查此快照](http://i60.tinypic.com/20jiqhf.png) – 54l3d