Mule:将470.000条记录插入Salesforce,每次迭代只允许200条记录

时间:2013-07-25 13:44:47

标签: database salesforce mule

我有一个骡子流,它从一个数据库中得到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>
....

2 个答案:

答案 0 :(得分:2)

Salesforce有各种批量api限制

数据加载批次可以包含一个不超过10 MB的CSV或XML文件。

  • 批次最多可包含10,000条记录。
  • 批次中的所有数据最多可包含10,000,000个字符。
  • 字段最多可包含32,000个字符。
  • 记录最多可包含5,000个字段。
  • 记录的所有字段最多可包含400,000个字符。
  • 批处理必须包含某些内容或发生错误。

如果您使用mule salesforce连接器,我会调用Bulk选项,允许超过默认批量大小。

答案 1 :(得分:0)

Mule EE JDBC传输为此用例提供了一个BatchManager。请参阅用户指南中的Large Dataset Retrieval