我正在使用批处理来更新DB中的记录。批量提交大小为100.我的批处理流程如下所示
<batch:process-records>
<batch:step name="Batch_Step" >
<batch:commit doc:name="Batch Commit" size="100">
<db:update config-ref="DB_Configuration"bulkMode="true" doc:name="Update" target="#[flowVars.count]">
<db:parameterized-query><![CDATA[update student set
column1=value1,
column2=value2 where id > 2000;] > </db:parameterized-query></db:update></batch:commit> </batch:step> </batch:process-records>
如何获得每次批量提交中更新的记录数?我原以为目标中的flowVars.count会有这个数。但是,当我打印我没有看到计数。如何获得成功提交的记录数?
答案 0 :(得分:0)
完成状态会告诉您overall status
成功的失败记录。
批处理有自己的批处理流变量名为<batch:record-variable-transformer doc:name="Record Variable"/>
的变量普通flowVars在批处理内不起作用。
如果要单独处理故障记录,请再使用一个批处理步骤并标记accept-policy="ONLY_FAILURES"
,因此无论批处理步骤中的记录失败,“仅允许成功”都将转到“处理故障”流程
<batch:job name="sample_projectBatch" max-failed-records="-1">
<batch:process-records>
<batch:step name="Allow only Success " accept-policy="NO_FAILURES">
<batch:record-variable-transformer doc:name="Record Variable"/>
</batch:step>
<batch:step name="handle failure" accept-policy="ONLY_FAILURES">
<logger level="INFO" doc:name="Logger"/>
<!-- logic to handle the failure -->
</batch:step>
</batch:process-records>
</batch:job>
答案 1 :(得分:0)
您可以在查询中解释更多“where id&gt; 2000”条件吗? “id”或“2000”是否来自您的有效载荷?
如果没有,那么我不明白查询是如何反复覆盖相同的db记录的。