4

我认为这将是一项简单的任务,但由于我是 PDI 的新手,所以到目前为止我无法找到选择哪种转换来完成以下任务:

我正在使用 Pentaho Data Integration(以前的 Kettle)社区版,将一个数据库“A”的一个表(“tasksA”)中的值映射/复制到另一个数据库 B 中的另一个表“tasksB”。taskA 有一个“描述”列' 并且我想将这些值复制到“tasksB”中的“taskName”列。此外,我必须多次复制“description”的每个值,因为在“tasksB”中,“taskName”中的每个值都有多行。

也许这可以通过直接 SQL 实现,但我想尝试是否可以使用 PDI 定义这个更具可读性,特别是因为在下一步中我必须将它扩展到涉及的其他表。

所以我必须告诉'description'的哪个值必须映射到'taskName'的哪个值以及在'taskName'列中包含该值的每个元组中(嗯,听起来像一个WHERE子句......)它应该被替换。

我对“表输入”和“表输出”步骤的第一次实验没有奏效,因为我只是在它们之间画了一个跳跃并修改了“表输出”步骤的“数据库字段”选项卡,这在生成的 SQL 不是我想要的。我不想修改架构,只需复制值。

如果有人能指出我需要的正确步骤/转换,那就太好了,我研究了 Pentaho Wiki 中的第一个示例,并获得了 Casters 等人的“Pentaho Kettle Solutions”一书。但可以找出如何解决这个问题。非常感谢您的帮助。

4

2 回答 2

0

@RFVoltolini 有一个很好的答案。或者你可以去

表格输入 -> 更新

并将错误输出连接到文本文件输出等其他内容。

于 2013-06-11T21:22:06.113 回答
0

如果我做对了,您应该使用连接到“插入/更新”步骤的表格输入。

在插入/更新步骤中,您需要通知任务 A 中的密钥应该在任务 B 上查找的位置。然后定义应更新 tasksB 上的哪些字段:description(作为流字段)-> taskName(作为表字段)。

请记住,如果找不到此键,则会在 tasksB 上插入一行。如果这不是您的计划,则需要构建类似的内容:表输入 -> 数据库查找 -> 过滤行 -> 插入/更新

于 2012-09-18T22:45:16.913 回答