如何处理Salesforce和Database Component中的增量提取

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何处理Salesforce和Database Component中的增量提取相关的知识,希望对你有一定的参考价值。

我有一个salesforce查询,它返回联系信息。我需要将数据保存在2个表中。在第一个表中,我必须存储关于处于中间状态的联系人的一些元数据。然后,我从保存的元数据中获取自动生成的元数据表ID,并将其应用于每个联系人。然后,我必须将联系人数据保存到数据库表中,然后最终将联系人元数据更新到其最终状态。问题是存在大量数据,因此在执行此过程时我必须包含提取大小。我想要实现的应该是这样的,请注意这只是我想要实现的目标。我如何知道获取联系人是否完整,以便我可以保存最终状态?如何构建交易流程?理想情况下,我想将ConsumerIterator传递给Java组件,我可以轻松地控制该过程。我可以将ConsumerIterator的引用传递给Java组件吗?如果我可以怎样才能这样做?

<sfdc:query fetchSize="100" config-ref="sfdc-connector" 

query="dsql:SELECT   Id, Account.Id,

  Account.Name, Account.PersonEmail, Account.LastName  From Contact" />

 dw:transform-message metadata:id="d1f6ab4f-4b40-4e30-ae" doc:name="trnsfm">

 <enricher target="variable:metaInfo"> 
   <flow-refname="getContactMetadata"/>
 </enricher> 

  <dw:set-payload><![CDATA[%dw 1.0

.//Rest of transformer

<db:insert config-ref="mysql_Configuration" doc:name="Save Metatdata">
  ...

 </db:insert>

<db:insert config-ref="MySQL_Configuration" doc:name="Save contacts">
....
<db:insert>

 <db:insert config-ref="MySQL_Configuration" doc:name="Update Metadata   
      Final State">
 ....
 <db:insert>

</flow>
答案

问题解决了。我编写了一个Java组件,实现了Callable并抓住了ConsumerIterator。然后我能够使用迭代器来获取fetchSize中的项目。然后我使用了Spring Jdbc,因为数据模型非常简单,可以事务性地保存数据

以上是关于如何处理Salesforce和Database Component中的增量提取的主要内容,如果未能解决你的问题,请参考以下文章

如何处理需求循环?

如何处理耗时的ajax请求

如何处理spring事务与多数据源冲突问题?

如何处理以编程方式添加的按钮事件? C#

如何处理片段和活动中的后压

21天学会C#----如何处理异常