在 Talend 中获取 TMSSqlRow 的输出

Get output of TMSSqlRow in Talend

我想使用 TMSSqlRow 获取受影响/删除/更新的行数。

工作内容如下:

文件使用包含很多 sql 语句,如 DELETE ... INSERT ... UPDATE ... 每行由“;”分隔。=12=]

但是现在,我想获得每条语句的结果(x 行已更新,如结果显示在 management studio 中)。

当我转到 tmssql 行的 "advanced settings" 选项卡时,我 select“传播查询的记录集”和 select 我之前创建的列(对象类型) .

执行时,我有这个错误:

The executeQuery method must return a result set.

那么,如何获取每个语句的结果并将其(通过示例)插入到数据库/文件中?

选项 "Propagate QUERY's recordset" 必须与 tParseRecordSet 结合使用才能从 returned 记录集中提取信息。但是,这还不够:您必须显式地将查询写入 return 记录数 updated/deleted。

这是我所做的:

我的 tJDBCRow(与 tMSSqlRow 相同)查询如下所示(请注意我必须在更新查询之前添加 'set nocount on',并在更新查询之后添加 'select @@rowcount')

tParseRecordSet 从列结果集中检索行数(nbLines 是我的行数的别名)

如果您需要受影响的行数,更好的选择是使用可以更新、插入或删除行的 tMSSqlOutput 组件。执行后,组件提供全局变量以显示操作影响了多少行。

((Integer)globalMap.get("tMSSqlOutput_1_NB_LINE")) 
((Integer)globalMap.get("tMSSqlOutput_1_NB_LINE_UPDATED"))   
((Integer)globalMap.get("tMSSqlOutput_1_NB_LINE_INSERTED"))    
((Integer)globalMap.get("tMSSqlOutput_1_NB_LINE_DELETED"))