Talend Job存在问题。我需要删除圆顶行(查询将由前一个组件给出)。为简化起见,我这样做:
如果取消选中“传播查询记录集”,则作业将完美运行。 但是在检查之后(我使用与MSSQL相同类型的组件没有问题),作业失败并显示错误消息:
Can not issue data manipulation statements with executeQuery().
我在组件连接的其他参数中指定了“AllowMultiQueries”。
是否可以通过tmysqlrow获取删除的行数?我想在tmysqlinput之前阻止使用,然后获取count(*),然后删除。
提前谢谢。 的问候,答案 0 :(得分:1)
一个简单的解决方案是使用tMysqlRow
来处理删除,然后使用tMysqlInput
来返回已删除行的数量:
必须使用相同的连接发出DELETE
和SELECT
,因此最后需要tMysqlConnection
并且最后需要tMysqlCommit
(tMysqlCommit是提交更改所必需的,除非你在连接上使用自动提交,顺便说一句,你不应该这样做。
替代解决方案
这是一个替代解决方案,我在其中发送ID
的列表(在tFixedFlowInput
中定义,但很可能从file..etc中读取)以删除a tMysqlOutput
(对数据设置为Delete的操作),并将id列设置为组件架构中的键:
然后您可以简单地使用tMysqlOutput_NB_LINE_DELETED
全局变量来获取已删除的行数。