如何使用Talend动态读取由路径列表定义的文件?

如何使用Talend动态读取由路径列表定义的文件?,talend,Talend,首先,我是塔伦德的新手。这是一个模拟项目,我做的培训目的 这里是上下文:我有一个CSV文件(简单地称为“CSV_IN”),其中我有一个指向不同文件的路径,其中包含我需要检索的信息。我无法更改文件,也无法更改文件树,因此我必须使用“CSV_in”中设置的路径检索文件 因此,在Talend Open Studio中,我制作了如下内容: 似乎对CSV的每一行都调用了“tJavaRows”,给出了一种迭代类型的输出,而不是流。但是如果我尝试直接从这里使用触发器,它会等待所有行完成,然后只发送一个触发器

首先,我是塔伦德的新手。这是一个模拟项目,我做的培训目的

这里是上下文:我有一个CSV文件(简单地称为“CSV_IN”),其中我有一个指向不同文件的路径,其中包含我需要检索的信息。我无法更改文件,也无法更改文件树,因此我必须使用“CSV_in”中设置的路径检索文件

因此,在Talend Open Studio中,我制作了如下内容:

似乎对CSV的每一行都调用了“tJavaRows”,给出了一种迭代类型的输出,而不是流。但是如果我尝试直接从这里使用触发器,它会等待所有行完成,然后只发送一个触发器

我需要的是,对于CSV_输入中读取的每个路径,Subbob将打开路径指向的文件并执行一些操作(这里我只是打印内容,现在…)

因此,在绿色部分,我迭代输出,并为每个路径发送“OnComponentOK”。“tJava_1”实际上不做任何其他事情

但当我运行作业时,我得到了以下信息:

蓝色Subbob运行4次,这是我在CSV_中的路径数。但为什么内容是空的

如果我打印上下文变量,我有4条路径,就像我应该的那样

我觉得整个工作太。。。麦基弗·伊什。。。 有更好的方法吗

编辑:如果我使用“tJavaRow”而不是“tJava”,我可以使用“input\u row”打印文件。但是我不能用tJavaRow做我想做的事。。。不管怎样,这是另一个问题,下次


但问题依然存在:这是一种“正确”的方式吗?

你的思路是正确的

首先,您需要从CSV文件中获取数据

然后,遍历这些行并执行作业中需要执行的任何操作

我认为可以通过另一种方式来完成的是使用tJava组件和onComponentOk触发器。或者,我会这样做:

inputCSV_1---迭代文件路径/名称-->inputCSV_2(使用来自第一个inputCSV的数据)--用于执行任务的行-->写入或结束


您可以从行变量(例如row1.filename)中的第一个inputCSV访问文件名,并使用它打开第二个inputCSV中的所有内容。不需要onComponentOk。

您在这里的思路是正确的

首先,您需要从CSV文件中获取数据

然后,遍历这些行并执行作业中需要执行的任何操作

我认为可以通过另一种方式来完成的是使用tJava组件和onComponentOk触发器。或者,我会这样做:

inputCSV_1---迭代文件路径/名称-->inputCSV_2(使用来自第一个inputCSV的数据)--用于执行任务的行-->写入或结束

您可以从行变量(例如row1.filename)中的第一个inputCSV访问文件名,并使用它打开第二个inputCSV中的所有内容。不需要onComponentOk