2014-11-14 56 views
1

我正在嘗試使用tFTPConnection從FTP站點下載某些文件。從密碼文件中讀取tftpconnection

這是一個普通的FTP連接,連接端口21

我希望能夠從一個文件,而不是硬編碼密碼到作業讀取密碼。

在一分鐘我只是進行連接,然後打印成功:

Current job layout

如何這可能是接近或解決任何意見?

+1

你可以發佈你的工作佈局截圖或更好地描述你到目前爲止嘗試過的嗎? – ydaetskcoR 2014-11-14 16:09:22

+0

當然,我用3個組件(測試連接)。 tftpconnection,tfixedflowinput(我只是打印成功),tlogrow。 tftpconnection是 使用oncomponentok連接到tfixedflowinput,並且tfixedflowinput使用Main連接到tlogrow。如果我鍵入密碼,然後運行 作業將打印以下內容: [統計]連接到端口插座3514 [統計]連接 成功 [統計]斷開 我希望能夠在一個文件中傳遞而不是輸入密碼。 謝謝。 – user1486984 2014-11-14 16:48:54

回答

0

Talend支持上下文變量的概念,它允許您在運行時定義用於它們的值。

這通常用於這樣你就可以「contextualise」的連接,然後部署在多種環境中工作,並有連接是在特定的環境終點。

例如,作業可能會需要連接到數據庫,但該數據庫是每個開發,測試和生產環境的不同。

而不是硬編碼的連接參數的工作,我們不是創造一些情境變量上下文組下,並把這些內容變量中的連接參數:現在

Contextualised tMySqlConnection

,在運行時,我們擁有了Talend作業中使用隱式上下文負荷有關連接參數的文件加載這些上下文:

Example implicit context load settings

在這種情況下,作業會在運行時讀取內容變量從CSV稱爲test.csv看起來像:

Example contexts file

現在,當這個工作是跑它將嘗試連接到localhost:3306 /使用root用戶和空密碼進行測試。

如果我們有另一臺機器上的另一個上下文文件(但具有相同的文件路徑),那麼這可能是指一個數據庫中的一些其他的服務器或簡單地使用不同的憑據和作業將連接到這個其他數據庫代替。

爲了您的使用情況,你可以簡單地創建一個上下文組的FTP連接設置,包括密碼(或可能只是contextualise密碼),然後是指它以同樣的方式:

Contextualised password with a tFtpConnection component

+0

感謝您的詳細解釋,非常感謝!我會嘗試一下,但是我正在努力設置我的背景。當我拖放一個上下文加載組件時,它已經有兩個值,我不能刪除,因爲它的禁用,它不是一個全局共享的上下文加載。 – user1486984 2014-11-14 22:26:00

+0

tContextLoad組件要求您通過鍵值對將某些數據傳遞給它。你可以從tFileInputDelimited中讀入一個csv,但你應該使用隱含的tContextLoad選項,正如我的答案中所解釋的那樣。 – ydaetskcoR 2014-11-14 22:29:56

+0

我創建了一個名爲partner_connection.csv的文件,其中包含以下 密碼,abc123 然後在我的工作中,我使用Implicit tContextLoad和字段分隔符設置爲','讀取此文件。然後在我的tftp連接密碼 字段我使用'context.password',但它給了我以下錯誤消息: 「密碼不能解析或不是字段」 – user1486984 2014-11-17 19:15:03