如何仅读取和解析 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 变坏。
所以我有一个 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 变坏。