我在这里的文档中读到
“如果批处理设置为 true,则入站消息正文的解释会略有变化——而不是参数迭代器,组件需要一个包含参数迭代器的迭代器;外部迭代器的大小决定了批量大小。”
“从 Camel 2.16 开始,您可以使用选项 useMessageBodyForSql 允许将消息体用作 SQL 语句,然后必须在带有键 SqlConstants.SQL_PARAMETERS 的标头中提供 SQL 参数。这允许 SQL 组件更动态地工作因为 SQL 查询来自消息正文。”
我有以下路线:
from("direct:processLine")
.setHeader(SqlConstants.SQL_PARAMETERS, simple("${body}"))
.setBody(constant("INSERT INTO SOME_TABLE "
" (Param1, Param2) " +
" values " +
" (:?Param1,:?Param2)"))
.to("sql://query?useMessageBodyForSql=true&batch=true&dataSource=dataSource");
主体是与参数列表匹配的键/值映射。
这有效,但不如预期。
每一行都被一一插入,而不是预期的批量插入。这种选项组合甚至可能吗?
如果不可能,有什么替代方法可以做到这一点?