如何使用apache camel dsl删除csv的头文件

问题描述 投票:-1回答:1

读取csv文件内容并生成文本文件作为输出,只删除csv的标题行,即正文的第一行。我能够通过放置数据生成文本文件,但如何从csv中删除标题/第一行无法执行此操作。

使用骆驼2.32.2

由于我是骆驼新手,我尝试了一些像removefirstline / remove header这样的方法,在这个版本中没有。我希望它可以用相同的dsl语言完成,而不是通过编写一些处理器等,下面是读取csv和将数据放入文本文件的基本代码,但是如何删除csv的头并放置休息数据。

    <route id="convertFileContents">
    <from id="_from1" uri="file:{{INPUT_FILEPATH}}?include=.*.csv&amp;moveFailed={{ERROR_FILEPATH}}&amp;move={{PROCESSED_FILEPATH}}&amp;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

file预期输出:文本

car hit,john,4/20/2012,11-Apr-19

Crane fell,john,9/1/2011,11-Apr-19
java spring apache-camel dsl spring-camel
1个回答
0
投票

您可以使用camel bindy和属性skipFirstLine来实现它。

定义POJO类:import org.apache.camel.dataformat.bindy.annotation.CsvRecord; import 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");
© www.soinside.com 2019 - 2024. All rights reserved.