[英]how to check data exist in targeted table in pentaho pdi
M第一次使用pentaho勺子,我有一个输入表,我写了一个sql查询,并希望将输入表的结果数据存储在不同的目标表中,但是在将目标表中的数据存储之前检查数据是否全部准备好了存在于表中。
尽管Cyrus的答案对于您的用例完全正确,但您也可以使用Merge Row (diff)
步骤。
它将传入流与现有表进行比较,并告知记录是新建,已修改,相同还是已删除。 然后,您可以使用“ Switch/Case
步骤执行相应的操作。
这种增量加载模式比Insert/Update
更有效,不仅因为它为您提供了更大的灵活性,而且主要是因为它不是一个有效的操作(您需要4个数据库访问:查看表,获取结果,如果需要更改它,推动结果)。
请注意,在PDI并行运行所有操作的情况下,您可能会无意中打开同一个表进行读写操作,最终导致死锁。 通常的技巧是在PDI中对引用表进行排序,因此它必须读取所有记录以确保它具有最后一个。 如果在Input table
预先排序流,则排序将花费您几乎没有时间(和内存)。
使用“插入/更新”步骤
此步骤完全符合您的要求(插入前检查),并可通过选中“不执行任何更新”来更新或跳过现有记录。
请务必配置确定唯一记录的关键字段。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.