Mule 数据库连接器给出错误:“quot;批量模式操作需要一个Iterable/Iterator作为有效负载。取而代之的是java.util.LinkedHashMap;

Mule 数据库连接器给出错误:“quot;批量模式操作需要一个Iterable/Iterator作为有效负载。取而代之的是java.util.LinkedHashMap;,mule,datamapper,Mule,Datamapper,在将有效负载传递给数据库连接器之前,我使用数据映射器将其转换为一个集合。我错过了什么 代码如下: `<data-mapper:config name="CSV_To_Map"` transformationGraphPath="csv_to_map.grf" doc:name="CSV_To_Map"/> <batch:job name="batchcustomerimport3.6.0Batch1"> <batch:input

在将有效负载传递给数据库连接器之前,我使用数据映射器将其转换为一个集合。我错过了什么

代码如下:

    `<data-mapper:config name="CSV_To_Map"`  

transformationGraphPath="csv_to_map.grf" doc:name="CSV_To_Map"/>
    <batch:job name="batchcustomerimport3.6.0Batch1">
        <batch:input>
            <file:inbound-endpoint path="C:\Users\hhernandez\testworkspace411\batchcustomerimport3.6.0Collection\src\test\resources\in" moveToPattern="#[message.inboundProperties.originalFileName]" moveToDirectory="C:\Users\hhernandez\testworkspace411\batchcustomerimport3.6.0Collection\src\test\resources\out" responseTimeout="10000" doc:name="File">
                <file:filename-regex-filter pattern="CustomerImportTest.csv" caseSensitive="true"/>
            </file:inbound-endpoint>
            <file:file-to-string-transformer doc:name="File to String"/>
            <data-mapper:transform config-ref="CSV_To_Map" doc:name="CSV To Map"/>
            <logger level="INFO" doc:name="Logger"/>
        </batch:input>
        <batch:process-records>
            <batch:step name="Batch_Step">
                <db:update config-ref="Generic_Database_Configuration" bulkMode="true" doc:name="Database">
                    <db:parameterized-query><![CDATA[UPDATE FBF05P
SET STORE#X = #[payload['STORENO']]
WHERE VIP#X = #[payload['CUSTID']]]]>
                </db:update>
            </batch:step>
        </batch:process-records>
        <batch:on-complete>
            <logger level="INFO" doc:name="Logger"/>
        </batch:on-complete>
    </batch:job>
`

使用batch commit.like更改批处理步骤以更新记录

<batch:step name="Batch_Step">
    <batch:commit doc:name="Batch Commit" size="500">
        <db:update config-ref="Generic_Database_Configuration" bulkMode="true" doc:name="Database">
            <db:parameterized-query>
                <![CDATA[
                    UPDATE FBF05P
                    SET STORE#X = #[payload['STORENO']]
                    WHERE VIP#X = #[payload['CUSTID']]
                ]]>
            </db:parameterized-query>
        </db:update>
    </batch:commit>
</batch:step>

由于您的输入是列表,但在批处理步骤中,它将是单个记录,即映射。因此,通过批量提交,您可以发送大量记录以进行更新


希望这能有所帮助。

更改批处理步骤以使用batch commit.like更新记录

<batch:step name="Batch_Step">
    <batch:commit doc:name="Batch Commit" size="500">
        <db:update config-ref="Generic_Database_Configuration" bulkMode="true" doc:name="Database">
            <db:parameterized-query>
                <![CDATA[
                    UPDATE FBF05P
                    SET STORE#X = #[payload['STORENO']]
                    WHERE VIP#X = #[payload['CUSTID']]
                ]]>
            </db:parameterized-query>
        </db:update>
    </batch:commit>
</batch:step>

由于您的输入是列表,但在批处理步骤中,它将是单个记录,即映射。因此,通过批量提交,您可以发送大量记录以进行更新


希望这有帮助。

就是这样!非常感谢您的快速回复。成功了!非常感谢您的快速回复。