2011-11-28 76 views
3

我想这将是一个容易的任务之间复制列,但由于我是新来的PDI,我不能 找出迄今为止其转化为选择完成以下任务:如何使用Pentaho的数据集成到表

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

也许这可能是通过直接SQL,但我想尝试是否可以用PDI来定义这个更具可读性,特别是因为在下一步中我将不得不将其扩展到其他表中。

所以我要告诉 “描述”其值必须映射到这 包含这个值的每条记录“TASKNAME”的价值和(当然,听起来像一个WHERE子句中...)在列'taskName'它应该被替换。

我与“表输入”和“表输出的第一个实验步骤时,我只是画了他们之间并修改“表输出”的步骤,其产生的“数据库 领域”标签跳 没有工作'drop column'statement in the result SQL which which is not what I want。我不想修改架构,只需复制值。

如果有人能指出我需要正确的步骤/转换, 我会通过Pentaho Wiki的第一个例子并获得Casters等人的“Pentaho Kettle Solutions”书。但可以找出如何 来解决这个问题。非常感谢任何帮助。

回答

0

如果我得到这个权利,你应该使用连接到“插入/更新”步骤的表输入。

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

请记住,如果找不到该键,则会在tasksB上插入一行。如果它不是你的计划,你需要建立如下:表输入 - >数据库查找 - >过滤行 - >插入/更新

0

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

表输入 - >更新

和错误输出连接到别的东西像一个文本文件输出。

相关问题