如何仅读取和解析 CSV 文件中的 1 列 Java

How to read and parse only 1 column from a CSV file Java

所以我有一个 CSV 文件,其中我有几个书籍属性,面对 bookName、authorName、yearOfPublishing 等。为了处理我正在实现批处理框架的文件。问题是我只想读取和解析 authorName 字段,而我的应用程序无法识别它,它只会将我的 CSV 文件的第一列传递到我的 authorName 字段中。这是我的项目 reader 和线映射器。

@Bean
public FlatFileItemReader<Author> reader(){
    FlatFileItemReader<Author> itemReader = new FlatFileItemReader<>();
    itemReader.setResource(new FileSystemResource("src/main/resources/BX-Books.csv"));
    itemReader.setName("csvReader");
    itemReader.setLinesToSkip(1);
    itemReader.setLineMapper(lineMapper());
    itemReader.setStrict(false);
    return itemReader;
}

private LineMapper<Author> lineMapper() {
    DefaultLineMapper<Author> lineMapper = new DefaultLineMapper<>();

    DelimitedLineTokenizer lineTokenizer = new DelimitedLineTokenizer();
    lineTokenizer.setDelimiter(";");
    lineTokenizer.setStrict(false);
    lineTokenizer.setNames("Book-Author");

    BeanWrapperFieldSetMapper<Author> fieldSetMapper = new BeanWrapperFieldSetMapper<>();
    fieldSetMapper.setTargetType(Author.class);

    lineMapper.setLineTokenizer(lineTokenizer);
    lineMapper.setFieldSetMapper(fieldSetMapper);
    return lineMapper;
}

THIS 就是这样做的方法。

这就是 class org.springframework.batch.item.file.transform.DelimitedLineTokenizer 中的方法 setIncludedFields 以防上述 link 变坏。