您好我正在尝试从一个表中获取记录并插入到另一个表中(MS SQL)当我获取它作为键值并使用批处理提交大小为 1000 但当 2000 条记录出现时只有两行插入桌子。我尝试使用批量模式,但批量模式要求动态查询下面是我的查询
INSERT INTO Sample VALUES( #[payload.Index], #[payload.Name])
和有效负载
{Index=1,Name=XX},{Index=2,Name=XX},{Index=3,Name=XX}
等请帮助我如何在 Mule ESB 中使用批量模式以及我可以为此编写哪些动态查询。批处理只是发布第一个行,所以我认为在批处理中使用批量将解决我的问题。提前谢谢!!!
问问题
6562 次
1 回答
4
您可以将骡子bulk mode = "true"
与parameterized query
.
<db:insert config-ref="Database_Configuration" bulkMode="true" doc:name="Database">
<db:parameterized-query>
<![CDATA[INSERT INTO Sample(column1, column2) VALUES( #[payload.Index], #[payload.Name])
]]></db:parameterized-query>
</db:insert>
从 mule中查看此批量模式链接
启用通过一个查询提交数据集合,而不是为集合中的每个参数集执行一个查询。启用批量模式可提高应用程序的性能,因为它减少了单个查询执行的次数。批量模式需要至少一个参数的参数化查询。
只要确保你payload
的Collection
类型进入bulk mode
在您的log4j2.xml
中,在 mode 中添加数据库模块的日志记录,debug
以查看 mule 传递到数据库的实际查询。非常适合调试。
<AsyncLogger name="org.mule.module.db" level="DEBUG"/>
请注意,bulk mode
这不适用于batch-processing
. 两者中的任何一个都可以,但是如果您的意图只是插入数据,bulk-mode
则比批处理更有效。
于 2016-02-23T19:14:27.240 回答