Apache camel 如何使用camel SQL从文件运行SQL脚本

Apache camel 如何使用camel SQL从文件运行SQL脚本,apache-camel,Apache Camel,为了运行quartz计划的SQL报告,我正在使用camel SQL组件。我的SQL是一个很长的查询,我更喜欢将其格式化为跨多行(确切地说是92行),即使它可以格式化为一行真正长的文本 我的首选方法是将此脚本放置到外部文件中,然后运行它。或者,我可以将其放入属性文件(不是我的首选项),但我尝试了,即使在每行末尾添加了反斜杠“\”,出于某种原因,它仍然会导致异常。暂时忽略这个问题,如何使用camel-SQL运行这个脚本,并且脚本驻留在外部文件中?看起来应该很容易,但我不知道怎么做。感谢您的指点。您可

为了运行quartz计划的SQL报告,我正在使用camel SQL组件。我的SQL是一个很长的查询,我更喜欢将其格式化为跨多行(确切地说是92行),即使它可以格式化为一行真正长的文本

我的首选方法是将此脚本放置到外部文件中,然后运行它。或者,我可以将其放入属性文件(不是我的首选项),但我尝试了,即使在每行末尾添加了反斜杠“\”,出于某种原因,它仍然会导致异常。暂时忽略这个问题,如何使用camel-SQL运行这个脚本,并且脚本驻留在外部文件中?看起来应该很容易,但我不知道怎么做。感谢您的指点。

您可以使用通过JDBC访问数据库的,在JDBC中,SQL查询和操作在消息体中发送

例如:

from("direct:start")
    .to("jdbc:myDataSource?useHeadersAsParameters=true")
    .log("result = ${body}");
通过以下方式进行测试:

final ProducerTemplate template = context.createProducerTemplate();
template.sendBody("direct:start", "select p.ID, p.PROJECT from projects p");
您可以从文件中读取SQL语句,而不是向正文传递静态字符串:

final String sql = FileUtils.readFileToString(new File("src/main/resources/sql/select.sql"));
template.sendBody("direct:start", sql);

谢谢,这很有帮助。