【问题标题】:loading multiple files with the same xml schema加载具有相同 xml 架构的多个文件
【发布时间】:2019-05-14 16:13:10
【问题描述】:

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

我只想定义一次 xml 架构,但在多个作业中使用它,每个作业都有不同的文件名。然而,xml 模式似乎与文件名紧密相关,并且更改文件名使其成为内置类型。我不希望构建类型,因为我希望对 xml 架构进行一次更改。

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

【问题讨论】:

    标签: etl talend


    【解决方案1】:

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

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

    要做到这一点,您可以从 tFileList 开始,它指向充满 XML 文件的文件夹。像往常一样设置它(您可能需要在 *.xml" 上使用文件掩码),然后通过 Iterate 流将其链接到 tFileInputXML 组件,将文件名指定为:((String)globalMap.get("tFileList_1_CURRENT_FILEPATH"))

    现在从Schema 旁边的下拉框中选择Repository(应默认为Built-In。从这里只需选择先前为单个文件定义的 XML 架构。现在您可以只使用定义的架构,但更改其他所有内容(您可能只想控制文件名并保持其余部分不变)。

    现在您可以简单地将其连接到您选择的数据库组件,例如tMySQLOutput,然后让数据库组件照常插入行。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 我将其更改为内置,然后使用上下文变量。不支持这么常见的场景确实很奇怪。
      • 确实如此。但毕竟不是如此令人惊讶。 Talend 的人为免费版 TOS 提供的典型使用场景是:你可以做任何事情,但你会做脏事......
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-07
      • 1970-01-01
      • 2019-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-20
      相关资源
      最近更新 更多