如何检查pentaho pdi中的目标表中是否存在数据

时间:2018-07-11 07:51:55

标签: pentaho pentaho-spoon pentaho-data-integration

我第一次使用pentaho勺子,我有一个输入表,并编写了一个sql查询,并希望将输入表的结果数据存储在不同的目标表中,但是在将数据存储到目标表中之前,请检查表中已经准备好所有数据。

2 个答案:

答案 0 :(得分:7)

尽管赛勒斯答案对于您的用例而言是完全正确的,但您也可以使用Merge Row (diff)步骤。

它将输入流与现有表进行比较,并判断记录是“新建”,“已修改”,“相同”还是“已删除”。然后,您可以使用Switch/Case步骤采取适当的措施。

增量加载模式Insert/Update更有效,这不仅是因为它为您提供了更大的灵活性,而且还因为它不是高效的操作(您需要进行4次数据库访问:表格,获取结果,如有必要,进行更改并推送结果)。

请注意,在PDI并行运行所有操作的情况下,您可能会无意中打开同一表进行读取和写入,最终导致死锁。通常的技巧是对PDI中的引用表进行排序,因此它必须读取所有记录以确保它具有最后一个记录。如果在Input tableenter image description here

中对流进行了预排序,则排序几乎不会花费时间(和内存)。

答案 1 :(得分:3)

使用“插入/更新”步骤

此步骤完全符合您的要求(在插入之前检查),并且可以通过选中“不执行任何更新”来更新或跳过现有记录。

请务必配置确定唯一记录的一个或多个关键字段。