[英]How to remove header of csv using apache camel dsl
通過僅刪除 csv 的標題行(即正文的第一行),讀取 csv 文件內容並生成文本文件作為輸出。 我可以通過放置數據來生成文本文件,但是如何從 csv 中刪除標題/第一行無法做到。
使用駱駝 2.32.2
由於我是駱駝的新手,我嘗試了一些方法,例如 removefirstline/remove header first is not there in this version. 我希望它以相同的 dsl 語言完成,而不是通過編寫一些處理器等。下面是讀取 csv 並將數據放入文本文件的基本代碼,但如何刪除 csv 的標題並放置其余數據。
<route id="convertFileContents">
<from id="_from1" uri="file:{{INPUT_FILEPATH}}?include=.*.csv&moveFailed={{ERROR_FILEPATH}}&move={{PROCESSED_FILEPATH}}&noop=false" />
<log id="_log1" message="CONTENTS OF THE CSV BEFORE TRANFORMATION-->${body}" />
<convertBodyTo id="_convertBodyTo1" type="java.lang.String" />
<setHeader headerName="fName" id="_setHeader1">
<simple>${file:onlyname.noext}</simple>
</setHeader>
<setBody id="_setBody1">
<simple>${body}</simple>
</setBody>
<log id="_log2" message="CONTENTS OF THE CSV AFTER TRANFORMATION-->${body}" />
<to id="_to2" uri="file:{{GENERATED_FILEPATH}}?fileName=${headers.fName}.txt" />
</route>
文件輸入:csv
Accident Description,Reported By,Date Of Loss,Reported Date
car hit,john,4/20/2012,11-Apr-19
Crane fell,john,9/1/2011,11-Apr-19
文件預期輸出:文本
car hit,john,4/20/2012,11-Apr-19
Crane fell,john,9/1/2011,11-Apr-19
您可以通過使用駱駝綁定和屬性skipFirstLine 來實現它。
定義一個POJO類:import org.apache.camel.dataformat.bindy.annotation.CsvRecord; 導入 org.apache.camel.dataformat.bindy.annotation.DataField;
@CsvRecord(separator = ",", skipFirstLine = true)
public class test
{
@DataField(pos = 1)
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@DataField(pos = 2)
private String age;
public String getAge() {
return age;
}
在你的路線中,你可以解組如下
from("file:/test?include=.*.csv&noop=true").routeId("test")
.unmarshal(new BindyCsvDataFormat(test.class))
.marshal(new BindyCsvDataFormat(test.class))
.to("file:/test/?fileName=output.txt&fileExist=Append");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.