使用camel路由时将列标题转换为CSV

时间:2014-07-18 10:27:32

标签: apache-camel

我有一个要求,我必须从表中获取包括列名的数据并将其保存为CSV。我编码如下,只获取表中的数据而不是列标题。有人可以帮助我吗

public void configure() throws Exception {
    from("restlet:http://localhost:8583/.....")
    .setBody(simple("select * from userDetails"))
    .to("jdbc:dataSource")
    .marshal()
    .csv()
    .to("file://C:/test.csv");
} 

感谢您的帮助......

1 个答案:

答案 0 :(得分:1)

在标题 - CamelJdbcColumnNames 中的to("jdbc:dataSource")语句后,您可以在交换中使用列名称。

所以,基本上解决方案就是这样:

public void configure() throws Exception {
    from("restlet:http://localhost:8583/.....")
    .setBody(simple("select * from userDetails"))
    .to("jdbc:dataSource")
    .to("direct:setColumnNames")
    .split(body())
    .marshal().csv()
    .to("file://C:/test.csv");

    from("direct:setColumnNames")
    .getHeader("CamelJdbcColumnNames")
    .marshal().csv()
    .to("file://C:/test.csv");
}

我建议您为自己编写一个自定义处理器,以解决您的问题。