如何处理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中的增量提取的主要内容,如果未能解决你的问题,请参考以下文章