您可能想尝试FeatureMerger—其中您的现有表是“supplier”,而新的/当前数据集是请求者—所有新记录都将通过未合并的端口。我发现有时使用FeatureMerger比Joiner更容易。
希望它能有所帮助。
Sasha
哇,在我下线的时候,有很多很棒的建议被贴出来了。我的第一个灵感是创建一个逗号分隔的ID列表,然后执行这些SQL语句来提取现有记录并将其从原始表中删除。我认为这样比较有效。
从id in(<;逗号分隔id list>;)的原始表中选择*;从id in(<;逗号分隔id list>;)的原始表中删除;
另请参见附加的工作区(FME 2016.1.3)。
selec count(1) as record_count from my_table,其中my_id = @Value(ID)
这假设SQLExecutor接收到的特性包含您想要查找的属性ID。
然后公开属性名“record_count”(或“record_count”,取决于数据库)并检查它是1还是0,例如使用测试器。
如果数据库字段“my_id”被正确索引,这应该很快。
我建议避免将记录计数从数据库移动到FME(即FeatureMerger, Counter等)的功能
Hi@ingalla,
希望您所说的表是一个数据库,在这种情况下,您可以使用多种方法来检测目标表中是否存在ID,例如可以使用FeatureMerger,或者使用目标表上的WHERE in子句来获取在新数据中使用相同的id是另一种可能。另一个选项是使用UpdateDetector转换器。
匹配后,您需要执行两个操作,即更新目标表中具有相同id的记录,这可以通过该表的writer或transformer(DatabaseUpdater)来完成,并将现有的旧记录插入到新表中(standaard writer操作)
我建议使用两个writer,并确保在navigator窗口中首先插入到新表,以确保首先插入到新表在更新完成之前。
可能还有其他方法可以做到这一点,就像使用FME时一样。
希望这能有所帮助
亚搏在线您可能还想考虑使用FeatureMerger。它完成了这项工作,是最方便用户/透明的FME变压器之一。不过,一定要考虑高希的评论。在处理数据库格式时,直接在数据库上使用SQL表达式通常是最快的选择
Hi In the Joiner确保基数设置为'Match First (1:0..1+)
< / > < / p > < p > < img src = " /存储/附件/ 6320 - example.png”> < / p > < p > < / p >
您好,表格的格式是什么?根据格式的不同,方式可能不同。例如,如果该表属于关系数据库,则可以使用SQL语句。