Header 在将 sql 结果编组到 csv 时缺失

Header missing at marshalling a sql result to csv

我骑着骆驼走这条路:

    <route id="route-sql">
        <from uri="file://data/sqlin?delay=1000&amp;include=.*\.sql$&amp;charset=utf-8" />

        <to uri="jdbc:datasourcePdm" />
        <marshal>
            <csv delimiter="&#x9;"  quoteDisabled="true" ></csv>
        </marshal>
        <to uri="file://data/sqlout"/>
    </route>

有效,数据写在csv-format但是第一行没有header。 'quoting-behaviour' 也有点奇怪 - 并非所有数据单元格都被引用。我尝试了此处指示的一些选项 http://camel.apache.org/csv.html 但没有成功。

我在 pom.xml.

中使用版本 2.15.1 的 artifactId 'camel-csv'

我的问题:
1. 如何将 header 行添加到 csv-file
2.如何引用所有数据单元格

通过使用 CsvDataFormat 并设置 headers、http://camel.apache.org/csv.html

@Test
public void test() throws Exception {
    context.addRoutes(new RouteBuilder() {

        @Override
        public void configure() throws Exception {
            from("direct:start")
                .log("${body}")
                .marshal(new org.apache.camel.dataformat.csv.CsvDataFormat().setHeader(new String[]{"foo", "bar"}))
                .log("${body}")
                ;
        }
    });

    template.sendBody("direct:start", new LinkedHashMap<String, Object>(){{
        put("foo", "abc");
        put("bar", 123);
    }});
    Thread.sleep(2000);
}

还没有尝试过以下方法,但我想它应该可以工作

<bean id="myCsv" class="org.apache.camel.model.dataformat.CsvDataFormat">
  <property name="delimeter" value="&#x9;"/>
  <property name="quoteDisabled" value="true"/>
  <property name="headers">
    <list>
      <value>a</value>
      <value>b</value>
    </list>
  </property>
</bean>

<route id="route-sql">
  <from uri="file://data/sqlin?delay=1000&amp;include=.*\.sql$&amp;charset=utf-8"/>

  <to uri="jdbc:datasourcePdm"/>
  <marshal ref="myCsv"/>
  <to uri="file://data/sqlout"/>
</route>