2

約 470.000 レコードのデータベースからすべてのレコードを取得するラバのフローがあります。これらの記録はセールスフォースに入れなければなりません。Salesforce では、反復ごとに 200 レコードしか挿入できません! 残念ながら、これらすべてのレコードを 1 回の 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>
....
4

2 に答える 2

2

Salesforce にはさまざまなバッチ API 制限があります

データ ロードのバッチは、10 MB 以下の単一の CSV または XML ファイルで構成できます。

  • バッチには、最大 10,000 レコードを含めることができます。
  • バッチには、バッチ内のすべてのデータに対して最大 10,000,000 文字を含めることができます。
  • フィールドには最大 32,000 文字を含めることができます。
  • レコードには、最大 5,000 フィールドを含めることができます。
  • レコードには、そのすべてのフィールドで最大 400,000 文字を含めることができます。
  • バッチにはなんらかのコンテンツが含まれている必要があります。含まれていない場合、エラーが発生します。

ミュールのセールスフォース コネクタを使用している場合は、既定のバッチ サイズよりも多くのサイズを許可するバルク オプションがあります。

于 2013-07-26T19:38:53.323 に答える
0

Mule EE JDBC トランスポートは、まさにこのユースケースに対応する BatchManager を提供します。ユーザー ガイドの大規模なデータセットの取得を参照してください。

于 2013-07-29T23:13:17.167 に答える