在Talend中加载一组文件的策略

时间:2011-06-09 15:37:30

标签: etl talend

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

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

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

由于

2 个答案:

答案 0 :(得分:5)

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

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

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

答案 1 :(得分:1)

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

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

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

步骤3:通过右键单击元数据下的Db Connection,然后按照向导来配置数据库:Step 3

第4步:右键单击每个组件,然后选择行>主要>拖到流程的下一步。

步骤5:打开tMap并将文件架构中的列映射到数据库架构。

第6步:运行该作业,如果您已按照所有向导操作,它应该可以正常工作,如果有错误只是将鼠标悬停在红色组件上,它通常会很好地描述错误。您将看到作业运行了已传输的记录数。

步骤7:在您做了那么远之后,使用与输入相同的架构创建tfiledelimited输出,右键单击输入选择Row>拒绝并将其拖动到新的分隔输出,这将是tmap拒绝的位置和记录。