【问题标题】:Creating a table from .csv file using PDI Kettle使用 PDI Kettle 从 .csv 文件创建表
【发布时间】:2016-02-12 06:03:27
【问题描述】:

我是 PDI 新手,我正在使用 PDI Kettle,我有 40 个不同列数的 .csv 文件,我想在一次转换中从这些文件中创建表格,我使用了“CSV文件输入”步骤选择一个文件和“表输出”步骤创建表,但是为了从这 40 个文件中创建 40 个表,我再次需要选择这两个步骤,所以有什么方法可以一次创建所有 40 个表一个单一的转变是可能的,请帮助我 提前致谢

【问题讨论】:

  • 您可以将所有 40 个文件加载到一个表中,但我不确定您是否可以将所有 40 个文件加载到 40 个不同的表中..
  • KETTLE_HOME/samples中有一个sample叫做动态建表
  • 将所有40个文件加载到一个表中后,我认为这里没有办法将所有这些文件根据列分开到不同的表中。
  • 请提供有关您的输入和预期输出的更多信息,以便我们能够提供帮助。
  • 是的,这可以做到。有几个问题:你如何将表名与文件名联系起来?表名是否与不带 .csv 扩展名的文件名完全相同?这个映射是否固定(意味着相同的文件名将始终映射到相同的表名)?或者,您可以将所有内容放在一个表中,并添加一列来包含它来自的文件名。然后,您可以根据需要创建 40 个不同的视图。

标签: mysql csv pentaho kettle pdi


【解决方案1】:

使用标准步骤在 Pentaho 中执行此操作有点复杂。要读取 CSV 并获取标题,然后读取数据,您需要使用 ETL Metadata injection

首先读取带有列名的标题,然后使用ETL Metadata injection 读取另一个转换中的数据。

自动创建数据库并不简单,因为 Pentaho 的主要开发人员不鼓励这样做。

这是如何自动创建表的答案和示例:Perform an auto CREATE TABLE to store the output of a transformation

因此,您将运行一个作业,将文件名和表名传递给转换。转换将使用ETL Metadata injection 将CSV 读入正确的字段,并使用meta.getSQLStatementsString(); 获取数据库的DDL 来存储数据。

【讨论】:

  • 这很棒.... ETL 元数据注入在我的场景中很有帮助....谢谢@bolav
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-10
  • 2011-05-06
相关资源
最近更新 更多