我一直在尝试这个camel-sql示例从后端oracle中获取一些行。
数据源定义:
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@localhost:port:sid"/>
<property name="username" value="username"/>
<property name="password" value="password"/>
</bean>
路线定义:
<route id="QueryTable">
<from uri="timer:foo?period=5s"/>
<to uri="sql:{{sql.selectOrder}}"/>
<to uri="file:target/data/?fileName=data.txt"/>
</route>
它似乎正确地获取行,但是,不会创建该文件并报告以下异常。任何帮助都将受到高度赞赏。
at org.apache.camel.impl.converter.BaseTypeConverterRegistry.mandatoryConvertTo(BaseTypeConverterRegistry.java:198) 在org.apache.camel.impl.MessageSupport.getMandatoryBody(MessageSupport.java:105) ......还有16个
答案 0 :(得分:2)
http://camel.apache.org/sql-component.html
对于select操作,结果是
List<Map<String, Object>>
类型的实例,由JdbcTemplate.queryForList()方法返回。
您收到List<Map<String, Object>>
作为查询的结果。如果你想将这个结果保存到文件,你必须按记录拆分列表(使用拆分器),将一个记录转换为字符串(也许你可以使用某种模板,或者只是加入字符串字段值)并保存(追加)这个字符串要归档。
答案 1 :(得分:0)
感谢您的帮助。这是我用来将resultSet保存到文件中的内容。
<from uri="timer:foo?repeatCount=1" />
<to uri="sql:{{sql.selectOrder}}"/>
<marshal>
<csv delimiter="|" />
</marshal>
<to uri="file://target/test.csv?fileName=data.txt" />
当然,pom.xml必须添加以下依赖项。
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-csv</artifactId>
</dependency>