如何检查 pentaho pdi 中目标 table 中存在的数据

how to check data exist in targeted table in pentaho pdi

M 第一次使用 pentaho spoon,我有一个输入 table 并且我写了一个 sql 查询,并希望输入 table 的结果数据存储在不同的targeted table,但在将数据存储到 targeted table 之前,请检查 table.

中是否存在所有准备好的数据

使用Insert/Update步骤

此步骤完全符合您的要求(插入前检查),并且可以通过检查 "Don't perform any updates" 来更新或跳过现有记录。

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

虽然 Cyrus 的回答对于您的用例来说是完全正确的,但您也可以使用 Merge Row (diff) 步骤。

它将传入流与现有流进行比较 table 并判断记录是新建、修改、相同还是已删除。然后您可以使用 Switch/Case 步骤来采取适当的操作。

这种 增量加载模式 Insert/Update 更有效,不仅因为它给你更多的灵活性,而且主要是因为它不是一个有效的操作(你需要 4数据库访问:查看 table,获取结果,根据需要更改它并推送结果)。

请注意,在 PDI 运行 所有操作并行的情况下,您可能会不经意地打开相同的 table 进行读取和写入,从而导致死锁。通常的技巧是在 PDI 中对引用 table 进行排序,因此它必须读取所有记录以确保它有最后一个。如果流在 Input table.

中预排序,则排序几乎不会花费您的时间(和内存)