斯潘8
斯潘4
在我的聚合转换器中,我使用它来准备和构建一个SQL查询,以便下一个馈送到sqleexecuter查询中,我想首先检查主键值是否为字符串类型,以便为每个值填充单引号。
(例如:
值1,值2价值3..对于数字主键
'value1'、'value2'、'value3',..对于字符串主键
)
所以我选择创建一个脚本化(python)私有参数来检查string类型的主键值,然后返回一个单引号,如下所示:
snglq=“,检查主键是否为字符串?如果type(fme_macrovalues['sde_pk'])==str:则添加一个单引号snglq=“”,'“否则:无单引号snglq=”,“返回snglq”
然后将返回的值赋给聚合器转换器中的分隔符字符框,如下所示:
但这不太管用,总是用填充单引号生成值,然而,主键值的类型是数字!!
这里会有什么问题,请帮助
您好!萨米亚斯努努,有一些问题需要考虑。
例如,如果主键属性的名称是“pk_n”(数字型主键属性名称)和“pk_s”(字符串型主键属性名称)之一,定义了与聚合器中的“attributes to concatenate”参数链接的用户参数“sde_pk”,选择其中一个参数。这个脚本化的python参数可以按预期工作。
如果fme_macrovalues['sde_pk']='pk_s'else',则返回“'、'”
然而,用这种方法,稍后,您必须将前导和尾随单引号添加到连接的值中,如果主键是字符串类型。这很麻烦,所以我认为如果选择的主键是字符串类型,那么最好预先用单引号将各个值括起来,然后用逗号作为分隔符连接这些值。
谢谢高桥为了你的答案。
你说得对,我试验了你提到的所有捕获物,尤其是第一个,脚本化参数只计算一次,以字符串形式返回,我注意到分隔符只能接受一个参数,不是属性。
当你表示,解决方案可能很简单,当然,Oracle的SQL语句可以接受围绕这些值的单引号,而不管这些值是字符串还是数字,所以我手动设置如下:
然后在下一个Transformer的SQL语句中-sqlExecutor,如下所示:
选择$(sde_pk)作为主密钥,从$(sde_feature_class)中选择$(sde_pk),其中在('@value($(sde_pk))'中选择$(sde_pk)'\
现在成功了。
再次感谢!
?2019安全亚搏在线软件公司|合法的