你好,
所以我有一个SQL执行器转换器执行的更新SQL查询。它看起来像UPDATE *TABLE_NAME* SET COLUMN_NAME = @VALUE(ATTRIBUTE_1),其中OTHER_COLUMN_NAME = '@VALUE(ATTRIBUTE_2)'
第一个属性总是一个数字,但是第二个是字符串,所以我必须加上引号。但是,字符串可以包含引号本身,这将导致这些情况下的查询失败。如果在它周围加上双引号,我会得到一个SQL错误:它认为我正在设置它等于数据库表中另一列的值,而不是fme属性。
如何将属性2的整个字符串值放入where子句中,报价和所有?
谢谢!
你好,
我不知道SQLExecutor和Postgres Writer之间是否有管理执行顺序的规则。
我希望在编写器之前执行sqlexecutor,因为它在编写之前备份了表。
我不能用"写前运行的SQL因为我在SQL指令中使用特性值,而这个字段不处理特性值。
奇怪的是,在我的一个工作区中,SQLExecutor在编写器之前执行,而在另一个工作区中,编写器在SQLExecutor之前执行(第二个工作区处理的数据要多得多)。
我试着改变它们的水平和垂直顺序但这没有改变任何东西。
谢谢你的帮助
基督教的
你好,
我想从oracle数据库调用一个过程
——在Oracle SQL中执行如下操作(必须声明address_heading和address id的变量):
执行clar.clar.get_address_model_building (38660795,
地址标题,
地址);
我正在使用SQL执行器,但似乎无法使其成功运行。它应该返回这样的值
BN 1T 1L C*
戴维斯法院,大街,HEADFORD,有限公司。高威
我尝试过很多次迭代,但一直没有成功;错误为“ORA-00900:无效SQL语句”
关于运行过程和返回结果需要传递什么,有什么建议吗?
谢谢
我在SQL Server 2016上有一个ArcSDE数据库,我想从一个条件中删除特性。
每天晚上我都要删除超过30天的数千个点。
我的点图层有一个日期时间2字段(创建日期)。
我想用sqleexecutor来完成这个操作并运行这个脚本。
从gpsdata中删除,其中[创建日期]<dateadd(day,-30年,GETDATE()
不幸的是,它不工作,我不明白为什么。日志并没有说明什么:
Microsoft SQL Server Spatial Reader:查询失败,可能是由于语句格式不正确。__query text` delete from gpsdatawhere[created_date]<dateadd(day,-30年,获取当前日期())”。提供程序错误“(-2147217871)查询超时已过期”
如果我用select*替换delete,它的工作原理。
这里有没有SQL beast知道是我的查询还是FME出了问题?我没有访问此SQL Server的权限,所以我不能在那里测试我的查询。
当然,我可以直接在SQL Server中创建一个过程,但是我的FME脚本在删除这些点之前对它们进行了FGDB备份。
参考下面使用SQLExecutor在SQL -中执行空间查询的教程https://knowledge.亚搏在线safe.com/articles/19649/performing-native-spatial-queries-on-database-tabl.html
这适用于OSM postGIS表中的节点,但是如果我尝试完全相同的方法,它会抛出错误。例如。:
选择*,“id”,"tags"->'highway' as "highway" from ways as osmwhere "tags"->'highway'不为空,ST_Within(o史密斯ST_GeomFromText (“@ value (_geometry)”,4326))= TRUE
日志显示,在我在上面代码中下划线的字符(osm.geom)。
如何使用此方法查询方法?
我试图使用SQLExecuter通过使用_matched_records输出来识别归档ArcSDE数据库中ID不存在于其他表中的记录。我的SQL语句是:
Select SCRD_ID from gis.STREET_CENTERLINE where SCRD_ID = '@Value(SCRD_ID)'
我知道SCRD_ID: 3745不存在于STREET_CENTERLINE表中,但是因为这个数据是存档的,所以返回的_matched_record计数为2,而不是0
有人知道如何只从ArcSDE数据库读取/查询当前数据吗?
我使用SQLExecutor在SQL Server空间点层(几何数据类型)触发这样的查询,除了多边形几何要复杂得多:
SELECT Count(MyField) AS CountMyField FROM [db].[owner].[table] WHERE WKB_Geometry.STWithin(geometry::STGeomFromText('MULTIPOLYGON (((527049.5 137150.4,527056.6 137139.7,527063.3 137134.4,527049.5 137150.4)))',27700))= 1
然而,大约2400个特征进入启动器端口后,我得到这个错误,翻译失败:
“指定版本id (%d)的app域由于内存压力被卸载,无法找到。”
最终,我将处理成千上万的功能,所以我需要一个解决方案,可以处理这么多数据,不仅仅是几千个输入特性。
我知道我可以把point图层读入我的工作区,但是SQLExecutor要快得多。
有什么建议吗?
你好,
我有一个SQLExecutor在SQL数据库上连接到我的SDE。我使用Microsoft SQL Server非空间格式的嵌入式连接。
我的SQL语句是:
FME_SQL_DELIMITER;
去
禁用gisowner上的trigger gisowner.segme mslink_counter[A10];
去
我得到以下错误:
查询失败,可能是由于语句格式不正确。
提供程序错误'(-2147217900)关键字'触发器'附近的语法不正确。
发生了致命错误。查看上面的日志文件了解详细信息
无法使用“mssql-ado”读卡器从数据集“ahs-gis”中读取功能
你好,
我有一个工作区,它读取一些数据,经过一些处理后,它通过PostGIS数据库中的FeatureWriter写入数据。然后,通过sql执行器触发更多的sql脚本。最后,通过FME再次读取所有数据进行最终写入。
问题是,当处理的数据变得更大时(需要几个小时到几天),时间会呈指数级增长。
在处理部分,我可以将数据拆分为较小的部分,并将这些数据写入PostGIS中的多个模式中。问题是,我无法在创建的模式的X数量上并行运行下一个sql脚本。如果我触发每个脚本x次,此触发按顺序进行,时间保持不变。
如果我试图将最长的脚本放到一个单独的工作区运行器中,当我说它不应该等待完成的作业时,我只能并行地运行这个WSR,但是,最近的步骤(=将x模式中的所有数据合并为1)有一个问题,因为表还不存在(或者不包含数据),因为工作区运行程序还没有真正完成任务。
是否有人知道如何并行触发这些脚本,并且仍然等到这些并行作业完成后再继续执行最后一部分?
sql executor上不存在group by函数。
我有一个工作台,其中使用SQLexecuter更新postgresql数据库中的特性。我想知道是否可以查看更新是否成功?当SQLexecuter遇到错误时,我将在日志中得到错误消息,但是我要寻找的是在PGadmin“查询成功执行250个更新的特性”中运行查询时所看到的更多信息。出于质量控制的目的,我真正感兴趣的是“查询成功执行0个功能更新”
你好,
我有一个SQLExecutor,它在WHERE条件中使用一些公共参数。如果用户将参数留空,那么查询将查找空白的“”字段。我如何才能动态控制什么进入WHERE条件,当参数为空时,我们排除了这个条件?
谢谢
我的工作区无法将子记录保存到名为“saverunstops”的自定义转换器内的mssql表中,但是父记录被提交到数据库。我如何保证所有父记录和子记录都在同一个事务中?
如果你能给我任何帮助,我将不胜感激
我有一个自定义转换器,它将API调用结果缓存到PostgreSQL表。它在键上尝试DatabaseJoiner,如果找到匹配的记录,它将连接的特性直接传递到主输出端口。否则,它调用API,将结果传递给SQLExecutor来插入它,以便连接传递给转换器的后续特性的相同键值。
不幸的是,在同一个工作区执行期间,DatabaseJoiner找不到SQLExecutor为后续功能存储的记录。我在sqleexecutor中尝试了显式提交(使用适当的分隔符声明),并在sqleexecutor之后尝试了5秒的每功能减速器,以防在fme工作台和postgresql之间存在某种竞争条件。没有运气。我仍然会遇到重复的密钥冲突,因为DatabaseJoiner的失败会导致同一个密钥被发送到API,并通过sqlExecutor再次尝试存储。我甚至尝试过将SQLExecutor移动到另一个名为WorkspaceRunner的工作区,但错误依然存在。
这个工作空间没有并行性,似乎每次调用SQLExecutor时都会提交INSERT。所以我感觉不到会导致这种行为的种族条件。希望别人能给我们一些启发。
当我在toad中执行查询时,有160万条记录正在获取。但是当我在fme中使用相同的查询时,它只获取了138000条记录,我在这个fmw文件中使用HTTP调用者。这里是http调用者的罪魁祸首吗?
fmw屏幕截图。
toad显示了1.47百万,因为已经有138000个记录被写入目的地,而我们改变了
标记字段NAX将状态匹配为“是”。在这个查询中,我们只取NAX匹配状态为空
解释:
我使用executor在fme中使用这个语句
接下来,我将创建文本字符串以摄取到HTTP调用者
httpCaller大约需要1秒钟来获得响应
一切工作好,fme说成功,没有错误味精。但只有13.8万人来到了目的地桌。我真的很惊讶。
我们如何解决这个问题?