使用 Pentaho Kettle,我可以在不预先组合数据流的情况下将数据输入到数据库表并生成连接吗?

Posted

技术标签:

【中文标题】使用 Pentaho Kettle,我可以在不预先组合数据流的情况下将数据输入到数据库表并生成连接吗?【英文标题】:Using Pentaho Kettle, can I input data to database tables and generate joins without combining datastreams beforehand? 【发布时间】:2014-04-02 14:20:37 【问题描述】:

我已经找到了this question and answer,它们一起为我的问题提供了大部分答案,而且格式完全新手完全可以理解!

我有一个额外的查询,希望能填补我的过程和理解中的一些空白:

我有一系列 XML 文件,每个文件都包含一个人的所有信息,而不是包含多个人的单个 CSV,作为显着输入。此信息需要拆分和操作,因此我在 Kettle 转换中有多个流来反映这一点(并且将在父作业中设置一个“针对每个文件”循环来处理多个文件)。

要使用所选答案中概述的方法将我的已处理数据从个人文件导入数据库,我是否需要将我的许多已处理数据流重新组合成多个流,所有要连接的数据都驻留在其中,或者是否存在解决此问题的另一种方法?

即如果我的 Kettle 转换中有数据流 A、B、C、D 和 E,并且在我的数据库中,A 连接到 B&C,D 连接到 E,我是否一定需要将流 A、B 和 C 合并为一个流和D&E变成另一个?

提前致谢

【问题讨论】:

你会考虑回答你自己的问题来正式关闭它吗? @MarcusRickert 没问题,只会移动更新作为答案。 【参考方案1】:

更新:我现在已经解决了这个问题。这样做涉及(很多问题)来自不同的方向,但我正在添加我的解决方案以可能帮助同样不熟练的 Kettle 用户:

我使用链接问题中概述的运算符(组合插入/更新)将数据插入/更新到每个文件的“最外层”表中(使用 StAX 运算符流式传输),我的架构非常类似于蜘蛛网,每个文件都有一个唯一信息的节点“核心”表,分支到表中,我的目标是存储许多文件共有的单个数据,例如国家。

我的转换中的数据流现在位于数据库中,我以增量方式加入流(例如,处理和插入后的地点+城市+国家/地区流与在位置表中生成位置实体相关)产生必要的关系。这最终导致生成连接表,例如我的位置表到“核心”表,以便给定 XML 文件的所有不同数据都正确连接。

【讨论】:

以上是关于使用 Pentaho Kettle,我可以在不预先组合数据流的情况下将数据输入到数据库表并生成连接吗?的主要内容,如果未能解决你的问题,请参考以下文章

Pentaho Kettle 中的 while 循环实现

使用 StAX / Kettle (Pentaho) 读取 XML 文件

在 Kettle/Spoon/Pentaho 中循环

无法连接到 Pentaho Kettle 中的 PostgreSQL 数据库

Pentaho PDI/Kettle 从文本文件中读取多行

Kettle Pentaho 通过最新数据进行备份转换