“检查记录是否存在于表中”的注释和答案 https://knowledge.亚搏在线safe.com/questions/39304/check-if-record-exists-in-table.html “检查表中是否存在记录”问题的最新注释和答案 alexandervstepa的回答 https://knowledge.亚搏在线safe.com/answers/39392/view.html网址

您可能想尝试FeatureMerger—其中您的现有表是“supplier”,而新的/当前数据集是请求者—所有新记录都将通过未合并的端口。我发现有时使用FeatureMerger比Joiner更容易。

希望它能有所帮助。

Sasha

格林尼治时间2017年1月31日星期二21:59:14 亚历山德维斯特帕
高实对高实言论的评论 https://knowledge.亚搏在线safe.com/comments/39340/view.html 是的,问题在于对SQL语句大小的限制,所以我在工作区示例中使用了分组技术,这是我在本讨论中提供的。
同步执行功能

亚搏在线
格林威治时间2017年1月31日星期二15:29 - 25
耶罗的评论耶罗的评论 https://knowledge.亚搏在线safe.com/comments/39335/view.html网站 是的,我倾向于将id连接的数量限制为100,000。否则,根据id的格式(串行/ UUID)

可能会抛出错误
格林尼治时间2017年1月31日星期二14:52:23 jeroenstiers
david_r评论david_r的回答 https://knowledge.亚搏在线safe.com/comments/39332/view.html网站 我同意,这是一个很好的解决方案,对于“合理”数量的id,但如果列表变得真的长,它可能会成为一个问题。什么是合理的当然将取决于数据库实现,例如,对于mssqlserver,它将是所谓的限制SQL语句长度的最大批处理大小
格林尼治时间2017年1月31日星期二14:13:24 david_r
答案由隆 https://knowledge.亚搏在线safe.com/answers/39330/view.html网址

哇,在我下线的时候,有很多很棒的建议被贴出来了。我的第一个灵感是创建一个逗号分隔的ID列表,然后执行这些SQL语句来提取现有记录并将其从原始表中删除。我认为这样比较有效。

从id in(<;逗号分隔id list>;)的原始表中选择*;从id in(<;逗号分隔id list>;)的原始表中删除;

另请参见附加的工作区(FME 2016.1.3)。

亚搏在线
格林尼治时间2017年1月31日星期二13:56:19
david_r对david_r的评论 https://knowledge.亚搏在线safe.com/comments/39323/view.html网站 是的,很多方法,一如既往。同时,一个采样器与一个variablerever/VariableSetter相结合,以避免混淆几何图形等:-) 格林尼治时间2017年1月31日星期二11:57:06 david_r 耶罗的评论耶罗的评论 https://knowledge.亚搏在线safe.com/comments/39322/view.html FME尤其如此。每个人都有自己喜欢的做事方式。正如你可能已经注意到的,我是一个Python的家伙:)
现在为你的建议,使用一个聚集器来结合的id,这样做限制了查询的执行量可以提高性能很多。但当然,你已经知道了。只是为其他读者提一下这个;)
格林尼治时间2017年1月31日星期二11:52:38 jeroenstiers
david_r对david_r的评论 https://knowledge.亚搏在线safe.com/comments/39319/view.html网站 这是个很好的问题。首先,在与FME服务器上的Joiner bug战斗了几天之后,我现在非常犹豫要不要使用它;-)

>但是认真地说,我认为它们都有各自的作用。如果您发现自己多次查找或多或少相同的ID,由于内置的缓存,Joiner将更有效。在经常从大表中查找已知的小子集的场景中,prefetch查询也是一个非常好的特性。< br > < br >对于这个问题我有印象的ID更改每个特性(我可能是错的),所以我不确定它有影响你是否使用一个或另一个< br > < br >但我最后一个数据库的家伙,所以我喜欢SQL因为我知道到底发生了什么:-)
格林尼治时间2017年1月31日星期二11:23:12 david_r
kd评论kd的评论 https://knowledge.亚搏在线safe.com/comments/39317/view.html 我同意。FeatureMerger绝对是这个用例中最慢的选项之一。我只是想指出它是可以使用的(尽管它不是最好的选择)。在这种情况下,与SQLExecutor或joiner相比,它的“可读性”可能是新/无经验的FME用户的优势(即使它仅用于在较小的数据集上进行测试)。

格林威治时间2017年1月31日星期二11:17:23 kd
由耶罗本人对耶罗本人的回答所作的评论 https://knowledge.亚搏在线safe.com/comments/39316/view.html网站 我想知道为什么应该使用SQLExecutor而不是Joiner?如果必须测试10000个功能,则对其中每一个功能执行查询将需要相当长的时间。你对此有何看法?
2017年1月31日星期二格林尼治时间11:10:20 jeroenstiers
david_r评论david_r的回答 https://knowledge.亚搏在线safe.com/comments/39315/view.html 就我个人而言,如果有问题的表包含不止几个记录,我将不惜一切代价避免使用FeatureMerger,因为您说它根本就不是很有效。但我确实同意易用性。 格林威治时间2017年1月31日星期二11:01:30 david_r david_r评论david_r的回答 https://knowledge.亚搏在线safe.com/comments/39314/view.html 这是一个很好的解决方案。如果要发布到FME Server,请注意,在2016.1.2之前的几个FME版本在与某些数据库格式(如MS SQL和Oracle)一起使用时,Joiner存在严重的bug。 格林威治时间2017年1月31日星期二10:59:48 david_r 答案由david_r https://knowledge.亚搏在线safe.com/answers/39313/view.html 如果您的数据库支持SQL,我的首选是SQLExecutor,它应该是这样的:

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等)的功能

格林威治时间2017年1月31日星期二10:52:09 david_r
回答,伊 https://knowledge.亚搏在线safe.com/answers/39312/view.html网址

Hi@ingalla

希望您所说的表是一个数据库,在这种情况下,您可以使用多种方法来检测目标表中是否存在ID,例如可以使用FeatureMerger,或者使用目标表上的WHERE in子句来获取在新数据中使用相同的id是另一种可能。另一个选项是使用UpdateDetector转换器。

匹配后,您需要执行两个操作,即更新目标表中具有相同id的记录,这可以通过该表的writer或transformer(DatabaseUpdater)来完成,并将现有的旧记录插入到新表中(standaard writer操作)

我建议使用两个writer,并确保在navigator窗口中首先插入到新表,以确保首先插入到新表在更新完成之前。

可能还有其他方法可以做到这一点,就像使用FME时一样。

A链接到一些有用的文章。

希望这能有所帮助

亚搏在线
2017年1月31日星期二10:36:00 GMT 意大利
答案由kd https://knowledge.亚搏在线safe.com/answers/39311/view.html

您可能还想考虑使用FeatureMerger。它完成了这项工作,是最方便用户/透明的FME变压器之一。不过,一定要考虑高希的评论。在处理数据库格式时,直接在数据库上使用SQL表达式通常是最快的选择

格林尼治时间2017年1月31日星期二10:28 - 07 kd
答案由jeroenstiers https://knowledge.亚搏在线safe.com/answers/39309/view.html

Hi

In the Joiner确保基数设置为'Match First (1:0..1+)
< / > < / p > < p > < img src = " /存储/附件/ 6320 - example.png”> < / p > < p > < / p > 格林威治时间2017年1月31日星期二10:15:32 jeroenstiers 答案由隆 https://knowledge.亚搏在线safe.com/answers/39308/view.html网址

您好,表格的格式是什么?根据格式的不同,方式可能不同。例如,如果该表属于关系数据库,则可以使用SQL语句。

2017年1月31日星期二格林尼治时间10:13:30