gpt4 book ai didi

java - Apache Camel逐行分割csv

转载 作者:行者123 更新时间:2023-11-30 02:05:57 24 4
gpt4 key购买 nike

我正在尝试对 .csv 文件进行一些转换。我当前的代码是

CsvDataFormat csv = new CsvDataFormat();

from("file:/pathToFile")
.unmarshal(csv)
.convertBodyTo(List.class)
.process(new CsvParserProcess())
.marshal(csv)
.to("file:/pathToOut").log("Finished Transformation").end();

它可以工作,但是我认为这会将整个文件加载到内存中(?)并且我现在想将其逐行分割,所以我尝试了

CsvDataFormat csv = new CsvDataFormat();

from("file:/pathToFile")
.unmarshal(csv)
.split(body().tokenize("/n")).streaming()
.process(new CsvParserProcess())
.marshal(csv)
.to("file:/pathToOut").log("Finished Transformation").end();

但是我收到错误没有类型转换器可用于从类型:java.lang.String转换为所需类型:java.util.List with value ...以及附带的处理器类

public void process(Exchange exchange) throws Exception {
System.out.println(exchange.getIn().getBody());
}

打印出来

[[data0,data1, .... , dataN], [data0,....,dataN],...,[data0,...,dataN]]

在堆栈跟踪之后。我什至不明白为什么我会进行类型转换?我做错了什么......

编辑:我忘记了 sysout 输出中的一些括号

最佳答案

调换我解码 csv 时的顺序解决了我的问题,现在的代码是

CsvDataFormat csv = new CsvDataFormat();

from("file:/pathToFile")
.split(body().tokenize("/n")).streaming()
.unmarshal(csv)
.process(new CsvParserProcess())
.marshal(csv)
.to("file:/pathToOut").log("Finished Transformation").end();

关于java - Apache Camel逐行分割csv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51377831/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com