2014-11-14 116 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