【问题标题】:Using Pentaho Kettle, how to load data in output table from CSV file with intermediary step reading in an input table?使用 Pentaho Kettle,如何从 CSV 文件加载输出表中的数据,并在输入表中读取中间步骤?
【发布时间】:2015-09-20 08:19:10
【问题描述】:

我有一个 CSV 文件,其中包含我需要使用 Pentaho ETL Kettle 加载到数据库表中的数据。但在将它们加载到表中之前,我需要使用从 CSV 文件中获取的值和必须从另一个输入表中收集的值(需要来自 CSV 的数据作为参数来收集所需信息)来构建要插入的每一行。我对构建转换所必须使用的步骤有点迷茫。谁能帮忙?

【问题讨论】:

    标签: mysql csv pentaho etl kettle


    【解决方案1】:

    我认为最简单的解决方案是这样的:

    • 首先通过文本输入步骤读取 CSV 文件
    • 然后您使用数据库连接步骤从表中获取其他列,例如:

      SELECT col1, col2, col3
      FROM input_table
      WHERE common_column = ?
      

      带有占位符?这将被您必须在此步骤中指定的参数替换。

    • 然后您可以将您的数据发送到输出步骤,例如“表格输出”。

    类似这样的:

    它不一定是最高效的解决方案,这取决于您的数据如何,或者您可以使用“数据库查找”步骤或“表输入”步骤然后加入。

    【讨论】:

    • 感谢@fthiella 提供的技巧。我试图使用 "Table Input" 步骤来做到这一点,但没有成功;问题是我不知道如何使用来自文本输入步骤的参数在表输入步骤中构建查询。但它在数据库连接步骤中运行良好。你是我的救命恩人。 :) 再次感谢您。
    • @EdouardHINVI 如果您使用表格输入步骤,您必须读取每一行(或一组过滤的行),但您不能在那里指定任何参数,您必须稍后使用连接行步骤。数据库查找也是一个不错的选择,但我发现数据库连接更易于理解和使用!不客气:)
    • 这里唯一需要注意的是Database Join 进行了实际的连接。如果您有多个匹配的行,除非您将 1 指定为“要返回的行数”,否则您将在输出中获得多个行。如果您只想在输出中包含 0 或 1 行,请使用 Database LookupStream Lookup 步骤。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-26
    • 1970-01-01
    相关资源
    最近更新 更多