Talend 使用 tmysqlrow 获取受删除影响的行

Talend get row affected by delete with tmysqlrow

我的 Talend 作业有问题。我需要删除圆顶行(查询将由先前的组件给出)。为了简化,我这样做:

如果我取消选中 "Propagate query recordset",作业 运行 就完美了。 但是在检查之后(我使用与 MSSQL 相同类型的组件没有问题),作业失败并显示错误消息:

Can not issue data manipulation statements with executeQuery().

我在组件连接的附加参数中指定"AllowMultiQueries"。

是否可以通过 tmysqlrow 获取删除的行数?我想防止在 tmysqlinput 之前使用,然后获取计数 (*),然后删除。

一个简单的解决方案是使用 tMysqlRow 来处理删除,然后使用 tMysqlInput 到 return 删除的行数:

DELETESELECT 必须使用相同的连接发出,因此 tMysqlConnection 是必要的,最后是 tMysqlCommit (提交时需要 tMysqlCommit更改,除非您在连接上使用自动提交,顺便说一句,您不应该这样做)

备选方案

这是一个替代解决方案,我发送了一个 ID 的列表(在 tFixedFlowInput 中定义,但很可能从文件等中读取)要删除到 tMysqlOutput(对数据集的操作为删除),并将 id 列设置为组件模式中的键:

然后您可以简单地使用 tMysqlOutput_NB_LINE_DELETED 全局变量来获取删除的行数。