首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >弹簧FlatFileReader锯齿CSV文件

弹簧FlatFileReader锯齿CSV文件
EN

Stack Overflow用户
提问于 2015-10-14 03:18:56
回答 1查看 293关注 0票数 0

我将通过spring批处理读取数据,并将其转储到数据库表中。

我的csv音乐事实文件的格式如下:

代码语言:javascript
复制
question; valid answer; potentially another valid answer; unlikely, but another;

所有行都有一个问题,并且至少有一个有效的答案,但是可以有更多的问题。保存该数据的简单方法是在pojo中的数据中使用一个字段表示String,另一个字段用于List<String>

下面是一个读取CSV文件的简单行映射程序,但我不知道如何以这种方式进行必要的更改以适应锯齿状的CSV文件。

代码语言:javascript
复制
  @Bean
  public LineMapper<MusicalFactoid> musicalFactoidLineMapper() {
    DefaultLineMapper<MusicalFactoid> musicalFactoidDefaultLineMapper = new DefaultLineMapper<>();
    musicalFactoidDefaultLineMapper.setLineTokenizer(new DelimitedLineTokenizer() {{
      setDelimiter(";");
      setNames(new String[]{"question", "answer"}); // <- this will not work!
    }});
    musicalFactoidDefaultLineMapper.setFieldSetMapper(new BeanWrapperFieldSetMapper<MusicalFactoid>() {{
      setTargetType(MusicalFactoid.class);
    }});

    return musicalFactoidDefaultLineMapper;
  }

我该怎么办?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-14 06:18:47

写你自己的线地图。据我所见,你没有任何复杂的逻辑。

就像这样:

代码语言:javascript
复制
public MyLineMapper implements LineMapper<MusicalFactoid> {
  public MusicalFactoid mapLine(String line, int lineNumber) {
     MusicalFactoid dto = new MusicalFactoid();
     String[] splitted = line.split(";");

     dto.setQuestion(splitted[0]); 
     for (int idx = 1; idx < splitted.length; idx++) {
        dto.addAnswer(splitted[idx]); 
     }

      return dto;
   }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33116048

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档