gpt4 book ai didi

java - Spring 批处理 : reading a csv file and modify this list before putting the results in another file

转载 作者:行者123 更新时间:2023-11-30 06:44:04 24 4
gpt4 key购买 nike

我有一个 csv 文件,我检索了所有这些行,并将这些行放入另一个 csv 文件中。

我需要对此列表进行更改。例如,将具有相同类型的所有行分组在一行中,以及整数类型列的总和。

有人可以帮助我吗?我花了很多时间才意识到这个小地方。

谢谢。

编辑

一个解释的小例子。

我想要实现这样的目标

输入文件:

一个1

A 2

B 1

B 3

输出文件应该是这样的

A 3 (1+2)

B 4 ( 1+3 )

最佳答案

您可以通过两个步骤和在其中存储临时结果的 SpringBean 来完成此操作。

首先,您需要一个 Spring Bean,您可以用它来总结:

@Component
public class SummaryCache {
private Map<String, Integer> summaryMap = new Hashmap<>();

public void addValue(String id, Integer value) {
summaryMap.merge(id, value, (curVal, toAddVal) -> curVal.int() + toAddVal.int());

}
}

接下来,你需要一个处理器,使用上面的SummaryCache。

@Autowired
private SummaryCache cache;

public ItemProcessor<YourDto> createProcessor() {
return item -> {
cache.addValue(item.getId(), item.getValue();
return item;
};
}

第一步的编写者是一个直通项目编写者,因此它什么也不做。

   public ItemWriter<YourDto> createWriter() {
return items -> {};
}

当然,您也可以在编写器中实现处理器的逻辑并跳过处理器,而不是使用空的编写器。

这就完成了第一步。

第二步可以只是一个 TaskletStep,它将 SummaryCache 作为输入( Autowiring 它)并为每个条目在文件中写入一行。

这种方法的主要缺点是,您必须完全处理整个文件,因此不可能重新启动。但由于您正在读取文件,因此在性能方面这并不是真正的问题。

关于java - Spring 批处理 : reading a csv file and modify this list before putting the results in another file,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43952412/

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