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

时间:2018-02-01 14:34:33

标签: count row talend

Talend Job存在问题。我需要删除圆顶行(查询将由前一个组件给出)。为简化起见,我这样做:

enter image description here

如果取消选中“传播查询记录集”,则作业将完美运行。 但是在检查之后(我使用与MSSQL相同类型的组件没有问题),作业失败并显示错误消息:

Can not issue data manipulation statements with executeQuery().

我在组件连接的其他参数中指定了“AllowMultiQueries”。

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

提前谢谢。 的问候,

1 个答案:

答案 0 :(得分:1)

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

enter image description here

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

替代解决方案

这是一个替代解决方案,我在其中发送ID的列表(在tFixedFlowInput中定义,但很可能从file..etc中读取)以删除a tMysqlOutput(对数据设置为Delete的操作),并将id列设置为组件架构中的键:

enter image description here

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

enter image description here