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 删除的行数:
DELETE
和 SELECT
必须使用相同的连接发出,因此 tMysqlConnection
是必要的,最后是 tMysqlCommit
(提交时需要 tMysqlCommit更改,除非您在连接上使用自动提交,顺便说一句,您不应该这样做)
备选方案
这是一个替代解决方案,我发送了一个 ID
的列表(在 tFixedFlowInput
中定义,但很可能从文件等中读取)要删除到 tMysqlOutput
(对数据集的操作为删除),并将 id 列设置为组件模式中的键:
然后您可以简单地使用 tMysqlOutput_NB_LINE_DELETED
全局变量来获取删除的行数。
我的 Talend 作业有问题。我需要删除圆顶行(查询将由先前的组件给出)。为了简化,我这样做:
如果我取消选中 "Propagate query recordset",作业 运行 就完美了。 但是在检查之后(我使用与 MSSQL 相同类型的组件没有问题),作业失败并显示错误消息:
Can not issue data manipulation statements with executeQuery().
我在组件连接的附加参数中指定"AllowMultiQueries"。
是否可以通过 tmysqlrow 获取删除的行数?我想防止在 tmysqlinput 之前使用,然后获取计数 (*),然后删除。
一个简单的解决方案是使用 tMysqlRow
来处理删除,然后使用 tMysqlInput
到 return 删除的行数:
DELETE
和 SELECT
必须使用相同的连接发出,因此 tMysqlConnection
是必要的,最后是 tMysqlCommit
(提交时需要 tMysqlCommit更改,除非您在连接上使用自动提交,顺便说一句,您不应该这样做)
备选方案
这是一个替代解决方案,我发送了一个 ID
的列表(在 tFixedFlowInput
中定义,但很可能从文件等中读取)要删除到 tMysqlOutput
(对数据集的操作为删除),并将 id 列设置为组件模式中的键:
然后您可以简单地使用 tMysqlOutput_NB_LINE_DELETED
全局变量来获取删除的行数。