在apachecamel中解析csv数据格式
我遵循了《骆驼行动》一书中的一个例子。如何封送和取消封送csv数据格式。但是,我想用(逗号分隔符)和拆分体来解组csv文件。然后,我将使用基于内容的在apachecamel中解析csv数据格式,csv,apache-camel,camel-ftp,camel-sql,akka-camel,Csv,Apache Camel,Camel Ftp,Camel Sql,Akka Camel,我遵循了《骆驼行动》一书中的一个例子。如何封送和取消封送csv数据格式。但是,我想用(逗号分隔符)和拆分体来解组csv文件。然后,我将使用基于内容的.choice根据所需任务分发消息。 事实上,第一个简单的例子并不适合我。我使用了camel 2.15.6(camel核心、camel上下文、camel csv、commons csv)和java7 public void configure() { CsvDataFormat csv = new
.choice
根据所需任务分发消息。
事实上,第一个简单的例子并不适合我。我使用了camel 2.15.6(camel核心、camel上下文、camel csv、commons csv)和java7
public void configure()
{
CsvDataFormat csv = new CsvDataFormat();
csv.setDelimiter(",");
from("file:test?noop=true")
.unmarshal().csv()
.split(body())
.to("file:out");
}
请在堆栈跟踪下方查找。您可以尝试删除noop=true吗?实际上,如果noop为true,则不会以任何方式移动或删除文件。此选项适用于只读数据或ETL类型要求。将csv作为如下参数传递:
public void configure()throws Exception
{
CsvDataFormat csv = new CsvDataFormat();
csv.setDelimiter(",");
from("file:test?noop=true")
.unmarshal(csv)
.split(body())
.to("file:out");
}
或者,它将帮助您根据CSV的标题设置基于包含的路由:I过滤器:
//Route 1 for filter CSV based on header
from("file:/home/r2/Desktop/csvFile?noop=true")
.choice().when(body().contains("partyName"))
.to("direct:partyNameCSV")
.when(body().contains("\"stuffName\""))
.to("direct:stuffNameCSV")
.otherwise().endChoice();
//Route 2 partyNameCSV
from("direct:partyNameCSV")
.unmarshal(csv)
.process(new PartyNameCSVProcessor())
.end();
//Route 3 stuffNameCSV
from("direct:stuffNameCSV")
.unmarshal(csv)
.process(new StuffCSVProcessor())
.end();
stacktrace没有任何指示。当你说它不适合你的时候。发生了什么。程序在没有复制文件的情况下终止。到(“文件:输出”);你的文件测试在哪里?检查路径是否正确。路径正确,因为Camel锁定文件(例如test\standard.csv.camelLock),然后程序关闭。我不知道为什么解组不起作用。请尝试不拆分。我认为split函数需要一个您没有指定的标记来分割