3

我想知道在 Talend 中解决以下问题的最佳策略是:

  • 我需要从存储在目录中的一组分隔文件中加载数据,这些文件的名称类似于 (SAMPLE1.DAT, SAMPLE2.DAT, ... , SAMPLEX.DAT)
  • 目标将是 MySQL 数据库中的表
  • 我必须一次加载所有数据,因为完成此任务后,我需要处理同一张表中的所有记录

我有点困惑,因为我不知道在 Talend 中是否可行。我看到了 tFileInputDelimited 组件,但我没有找到解决它的方法。

谢谢

4

2 回答 2

5

要从一个目录中读取多个文件,您将使用 tFileList 组件。它允许您指定目录和文件名模式。与该模式匹配的目录中的所有文件都将一个接一个地处理。

您需要使用从 tFileList 组件到描述您要对每个文件执行的操作的那些组件的“迭代”链接。在您的情况下,您将从 tFileInputDelimited 组件开始(读取文件)并将其主要输出连接到 tMysqlOutput 组件。默认情况下,MySQL 组件只会将数据附加到现有表中,这样就可以得到你想要的结果。

在 tFileInputDelimited 组件中,您不会使用固定文件名,而是使用 tFileList 组件为每次迭代设置的变量文件名(可以说是循环变量)。该循环变量的名称可以在工作室的“大纲”视图中看到,通常位于左下角。

于 2011-08-26T15:14:02.860 回答
1

您将使用组件 tFileInputDelimited 到 tMap (可选)到 tmysqlOutput

第 1 步:像这样配置一些组件,除了您将使用分隔文件输入: 步骤1

步骤2:配置分隔文件的组件设置,单击向导的磁盘:第2步

第 3 步:通过右键单击元数据下的 Db Connection 来配置您的数据库,然后执行以下向导:第 3 步

第 4 步:右键单击每个组件,然后选择 Row > Main > 拖动到流程中的下一步。

第 5 步:打开您的 tMap 并将列从文件模式映射到数据库模式。

第 6 步:运行该作业,如果您遵循了所有向导,它应该可以工作,如果有错误,只需将鼠标悬停在红色组件上,它通常可以很好地描述错误。您将在作业运行时看到它已传输了多少记录。

第 7 步:在你做到这一点之后,创建一个tfiledelimited与输入具有相同架构的输出,右键单击输入选择行 > 拒绝并将其拖动到新的分隔输出,这是被拒绝的位置和记录tmap将被发送。

于 2011-06-23T17:47:56.383 回答