我在骆驼中找到了这条路线:
<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格式写入,但第一行没有标题。此外,&#39;引用行为&#39;有点奇怪 - 并非所有数据单元都被引用。我尝试了http://camel.apache.org/csv.html所示的一些选项,但没有运气。
我正在使用artifactId&#39; camel-csv&#39;在我的pom.xml中使用版本2.15.1。
我的问题:
1.如何将标题行添加到csv文件中
2.如何引用所有数据单元
答案 0 :(得分:0)
使用CsvDataFormat并设置标题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>