使用来自 Camel 的 SQL 组件将输入正文插入数据库
Insert the input body in a database with the SQL component from Camel
我想解析 xml 个文件的内容并创建对数据库中 insert/update 部分 xml 内容的查询。
到目前为止,我能够在处理器中生成 SQL 查询,用它们填充正文,然后我想用 SQL 组件 运行 它们。
如果这不是推荐的方法,请首先告诉我。
(例如,我觉得 SQL 组件只用于 运行 1 个查询)。
...
.process(new XmlToSqlProcessor())
.to("sql:${in.body}?dataSource=dataSource")
不起作用,${in.body} 未被其内容替换(意味着处理器中生成的查询集):
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '${in.body}' at line 1
我应该在处理器中完成所有工作(尽管我想避免所有数据库样板),还是使用 JDBC 组件?
如果是,你能确认SQL组件只能运行1个查询,不能解析Simple Expression Language吗? (我也试过 :#${body} 我在那里看到 https://issues.apache.org/jira/browse/CAMEL-7455 但正如预期的那样,它被认为是一个参数,而不是整个查询)
谢谢!
编辑: 经过更多阅读后,似乎 SQL 组件和 JDBC 组件也只能执行 1 个查询。所以,拥有自己的处理器显然是唯一的选择……如果我错了请告诉我 ;-)
你是对的,sql 组件将只执行 1 个查询并且不会评估 ${in.body}。您在路线中错过了两个概念:
试试这样的:
...
.process(new XmlToSqlProcessor())
.split().body()
.recipientList(simple("sql:${in.body}?dataSource=dataSource"))
我想解析 xml 个文件的内容并创建对数据库中 insert/update 部分 xml 内容的查询。
到目前为止,我能够在处理器中生成 SQL 查询,用它们填充正文,然后我想用 SQL 组件 运行 它们。
如果这不是推荐的方法,请首先告诉我。
(例如,我觉得 SQL 组件只用于 运行 1 个查询)。
...
.process(new XmlToSqlProcessor())
.to("sql:${in.body}?dataSource=dataSource")
不起作用,${in.body} 未被其内容替换(意味着处理器中生成的查询集):
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '${in.body}' at line 1
我应该在处理器中完成所有工作(尽管我想避免所有数据库样板),还是使用 JDBC 组件?
如果是,你能确认SQL组件只能运行1个查询,不能解析Simple Expression Language吗? (我也试过 :#${body} 我在那里看到 https://issues.apache.org/jira/browse/CAMEL-7455 但正如预期的那样,它被认为是一个参数,而不是整个查询)
谢谢!
编辑: 经过更多阅读后,似乎 SQL 组件和 JDBC 组件也只能执行 1 个查询。所以,拥有自己的处理器显然是唯一的选择……如果我错了请告诉我 ;-)
你是对的,sql 组件将只执行 1 个查询并且不会评估 ${in.body}。您在路线中错过了两个概念:
试试这样的:
...
.process(new XmlToSqlProcessor())
.split().body()
.recipientList(simple("sql:${in.body}?dataSource=dataSource"))