Header 在将 sql 结果编组到 csv 时缺失
Header missing at marshalling a sql result to csv
我骑着骆驼走这条路:
<route id="route-sql">
<from uri="file://data/sqlin?delay=1000&include=.*\.sql$&charset=utf-8" />
<to uri="jdbc:datasourcePdm" />
<marshal>
<csv delimiter="	" 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="	"/>
<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&include=.*\.sql$&charset=utf-8"/>
<to uri="jdbc:datasourcePdm"/>
<marshal ref="myCsv"/>
<to uri="file://data/sqlout"/>
</route>
我骑着骆驼走这条路:
<route id="route-sql">
<from uri="file://data/sqlin?delay=1000&include=.*\.sql$&charset=utf-8" />
<to uri="jdbc:datasourcePdm" />
<marshal>
<csv delimiter="	" 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="	"/>
<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&include=.*\.sql$&charset=utf-8"/>
<to uri="jdbc:datasourcePdm"/>
<marshal ref="myCsv"/>
<to uri="file://data/sqlout"/>
</route>