我正在使用camel-SQL组件来运行石英计划的SQL报告。我的SQL是一个冗长的查询,我更喜欢将其格式化,使其跨越多行(确切地说是92行),即使它可以被格式化为单个冗长的文本行。
我的偏好是将此脚本放入外部文件然后运行它。或者,我可以将它放入属性文件(不是我的偏好),但我尝试了,甚至在添加了反斜杠' \'在每一行的末尾,由于某种原因它仍然会导致异常。暂时忽略该问题,我如何使用camel SQL运行此脚本,脚本驻留在外部文件中?看起来它应该很容易,但我不知道该怎么做。谢谢你的任何指示。
答案 0 :(得分:1)
您可以使用通过JDBC访问数据库的jdbc component,其中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);