西班牙
斯潘4
哇,在我下线的时候,有很多很棒的建议被贴出来了。我的第一个灵感是创建逗号分隔的ID列表,然后执行这些SQL语句以提取现有记录并将它们从原始表中删除。我认为这样比较有效。
从id所在的原始表中选择*();从original_table中删除id在( );
另见附件工作区(FME 2016.1.3)。
如果您的数据库支持SQL,我的首选项将是具有以下内容的SQLExecutor:
选择计数(1)作为我的表中的记录计数,其中我的id=@Value(id)
这假设SQLExecutor接收到一个包含要查找的属性ID的特性。
然后暴露属性名“record_count”(或“record_count”,具体取决于数据库)并检查它是1还是0,例如。使用测试仪。
如果数据库字段“my_id”被正确索引,那么应该会很快变亮。
我建议避免使用将记录计数从数据库移动到FME的功能(即。功能合并、计数器等)。
您好!@ingalla,
希望你是指一个数据库,在这种情况下,你可以使用多种方法来检测目标表中ID的存在,例如可以使用特征合并,或者使用目标表中的WHON子句来获得新数据中具有相同ID的记录是另一种可能性。另一个选项是使用UpdateDetector转换器。
在匹配之后,您需要做两个操作:对具有相同ID的记录的目标表进行更新,这可以通过该表的写入器或转换器(DabaseUpDATER)完成,并在新表中插入现有的旧记录(标准写入器动作)。
我建议使用两个编写器,并确保在navigator窗口中首先插入到新表中,以确保在完成更新之前首先插入到新表中。
可能还有其他方法可以做到这一点,比如使用FME。
一个链接一些有用的文章。
希望这个有帮助。
您还可以考虑使用FeatureMerger。它做的工作,是最容易用户友好/透明的FME变压器之一。不过,一定要把高桥的话考虑进去。在处理数据库格式时,直接在数据库上使用SQL表达式通常是最快的选择。
您好!@ingalla
您可以通过尝试将输入数据与连接程序链接到现有数据库来实现此功能。可以通过TestFilter检查_matched_records属性是否包含大于0的值来发送Joiner的输出。如果是这种情况,则ID已经存在于数据库中。否则就不是。
?2019安全亚搏在线软件公司|合法的