使用相同的xml架构加载多个文件

时间:2014-01-17 13:10:43

标签: etl talend

我在Talend中使用来自一个提供程序的xml文件定义了一个xml-schema。我有多个我需要单独处理的提供程序,但它们具有相同的xml格式。

我只想定义一次xml架构,但是在多个作业中使用它们,每个作​​业都有不同的文件名。然而,xml架构似乎对文件名很紧张,而更改文件名使其成为内置类型。我不想要构建类型,因为我希望对xml架构进行一次更改。

有人能指出我正确的方向吗?是否应该使用上下文来完成?

2 个答案:

答案 0 :(得分:1)

可以为设置文件定义一个模式(使用提供的向导或自己构建它),然后只需从存储库中选择它就可以使用该模式。

因此,作为示例,您可能希望循环遍历XML文件的文件夹,并使用相同的模式为所有文件读取它们,然后将其加载到数据库中:

Example XML Job

要执行此操作,您将从tFileList开始,该Iterate指向包含XML文件的文件夹。像往常一样设置它(您可能需要* .xml上的文件掩码“),然后通过tFileInputXML流将其链接到指定文件名为((String)globalMap.get("tFileList_1_CURRENT_FILEPATH"))的{​​{1}}组件。Repository。 / p>

现在从Schema旁边的下拉框中选择Built-In(默认为tMySQLOutput。从此处只需选择之前为单个文件定义的XML架构。现在您可以仅使用已定义的模式但更改其他所有内容(您可能只想控制文件名并保持原样)。

现在,您只需将其连接到您选择的数据库组件,例如{{1}},并让数据库组件按常规方式插入行。

答案 1 :(得分:0)

这很常见,但不幸的是没有一个优雅的解决方案。

上下文变量仅限于原始类型(几乎),而唯一的方法是定义xml模式元数据,然后关闭内置以仅更改文件名。这非常难看,但AFAIK是唯一可能的解决方案。