我有一个骡子流,它从一个数据库中得到470,000条记录的所有记录。 这些记录我必须投入到salesforce中。 Salesforce只允许我每次迭代插入200条记录! 不幸的是,我无法在一次db调用中获取所有这些记录,它会使机器内存过载。 所以我的想法是在Mule中使用“foreach”组件继续循环,直到我从db调用中获得少于200条记录。
如何实现这些目标?
我的配置流程在这里:
<foreach batchSize="200" doc:name="For Each" counterVariableName="foreachCount">
<jdbc-ee:outbound-endpoint exchange-pattern="request-response" queryKey="select200records" queryTimeout="-1" connector-ref="postgresConnector" doc:name="Database">
<jdbc-ee:query key="select200records" value="select * from parties limit 200 offset #[variable:offset]"/>
</jdbc-ee:outbound-endpoint>
<set-variable variableName="dbPayload" value="#[payload]" doc:name="Variable"/>
<scripting:component doc:name="Script">
<scripting:script engine="jython"><![CDATA[result = len(payload)]]></scripting:script>
</scripting:component>
....
答案 0 :(得分:2)
Salesforce有各种批量api限制
数据加载批次可以包含一个不超过10 MB的CSV或XML文件。
如果您使用mule salesforce连接器,我会调用Bulk选项,允许超过默认批量大小。
答案 1 :(得分:0)
Mule EE JDBC传输为此用例提供了一个BatchManager。请参阅用户指南中的Large Dataset Retrieval。