插入的ArrayList在骡子数据库 [英] Insert Arraylist in Database in Mule
问题描述
我想一个的ArrayList
的内容插入到用骡子ESB SQL Server数据库。在的ArrayList
看起来
I am trying to insert the contents of an ArrayList
to a SQL Server database using Mule ESB. The ArrayList
looks like
[
{Id=a1o90000001muvWAAQ, Billing_Number__c=1000005, type=Call_Log__c},
{Id=a1o90000001muvXAAQ, Billing_Number__c=1000006, type=Call_Log__c}
]
我应该如何以最佳的方式插入到数据库中呢?
How should I insert this into the database in an optimized way?
我的骡子流程如下。
<sfdc:query config-ref="Salesforce__Basic_authentication" query="#[flowVars.query]"
doc:name="Salesforce"/>
<set-variable variableName="result" value="#[new java.util.ArrayList()]"
doc:name="Variable"/>
<foreach doc:name="For Each">
<set-variable variableName="itrresult" value="#result.add(message.payload)]"
doc:name="Variable"/>
</foreach>
<splitter expression="#[flowVars.result]" doc:name="Splitter"/>
<logger message="#[payload['Id']]" level="INFO" doc:name="Logger"/>
#[负载[ID]
给我的Id LoggerMessageProcessor:a1o90000001mzgzAAA日志
#[payload['Id']]
gives me the Id LoggerMessageProcessor: a1o90000001mzgzAAA in log.
我不知道我在做什么,虽然是正确的方式。我只是在骡子的学习曲线的开始。
I am not sure what i am doing is the right way though. I am just on the beginning of the learning curve in Mule.
推荐答案
您不需要分离器或在Foreach范围。数据库连接器有一个<一个href=\"http://www.mulesoft.org/documentation/display/35X/Database+Connector#DatabaseConnector-optional\">bulk模式,使连接器接受一个集合作为有效载荷。
You don't need a Splitter or the Foreach scope. The Database connector has a bulk mode that makes the connector accept a collection as payload.
启用同一个查询提交数据的集合,[...]。启用批量模式,提高应用程序的性能,因为它降低了单个查询执行的次数。批量模式需要至少一个参数一个参数化查询。
Enable to submit collections of data with one query, [...]. Enabling bulk mode improves the performance of your applications as it reduces the number of individual query executions. Bulk mode requires a parameterized query with at least one parameter.
与 bulkMode =真正的
在插入,更新启用或删除操作。
Enable it with bulkMode="true"
in an insert, update or delete operation.
编辑:您的Salesforce查询组件后,用这个吧:
Use this right after your Salesforce Query component:
<sfdc:query config-ref="" query="#[flowVars.query]" doc:name="Salesforce"/>
<db:insert config-ref="" bulkMode="true" doc:name="Database">
<db:parameterized-query>
<![CDATA[INSERT INTO TABLE (ID, BILLING_NUMBER__C, TYPE)
VALUES (#[payload.Id], #[payload.Billing_Number__c], #[payload.type]);]]>
</db:parameterized-query>
</db:insert>
由数据库插入部件返回的有效载荷是与行数的阵列改变执行的每个查询。在你的情况下,一个数组与多少个项目Salesforce的查询组件返回,大小如 [1,1,1,...]
。
如果您仍然需要登录,这样做:
If you still need to log, do this:
<sfdc:query config-ref="" query="#[flowVars.query]" doc:name="Salesforce"/>
<foreach doc:name="For Each">
<logger message="#[payload.Id]" level="INFO" doc:name="Logger"/>
</foreach>
<db:insert config-ref="" bulkMode="true" doc:name="Database">
<db:parameterized-query><!-- the query --></db:parameterized-query>
</db:insert>
或者这样:
<sfdc:query config-ref="" query="#[flowVars.query]" doc:name="Salesforce"/>
<foreach doc:name="For Each">
<logger message="#[payload.Id]" level="INFO" doc:name="Logger"/>
<db:insert config-ref="" doc:name="Database"><!-- bulkMode disabled -->
<db:parameterized-query><!-- the query --></db:parameterized-query>
</db:insert>
</foreach>
这篇关于插入的ArrayList在骡子数据库的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!