Parsing CSV file with records that contain commas in Spring Batch

Viewed 32

I am trying to read to CSV file and write it to the output file using spring batch

My problem is some of the records in the CSV contains commas "," thus ItemReader is assuming the String after the commas as of different column

For example

column1    column2
steve       john,bill

if this is the input, then I am getting the output like this, in output file

column1    column2
steve       john     bill

I think quoteCharacter() can be used here, but I am not sure.

This is my ItemReader config

FlatFileItemReader<IrcRevisedData> reader = new FlatFileItemReader<>();

File inputDir = new File(ircReferenceData.getInputDir());
if(!inputDir.isDirectory() || inputDir.list().length <= 0)
    throw new RuntimeException("Either input directory is not present or its empty");

if(ircRevisedReferenceData.getFileName() == null){
    throw new RuntimeException("File not found");
}
Resource inputFile = new FileSystemResource(inputDir + File.separator + ircRevisedReferenceData.getFileName());
reader.setResource(inputFile);


DelimitedLineTokenizer delimitedLineTokenizer = new DelimitedLineTokenizer(",");
delimitedLineTokenizer.setNames(IrcRevisedData.getFields());

BeanWrapperFieldSetMapper<IrcRevisedData> beanWrapperFieldSetMapper = new BeanWrapperFieldSetMapper<>();
beanWrapperFieldSetMapper.setTargetType(IrcRevisedData.class);

DefaultLineMapper<IrcRevisedData> defaultLineMapper = new DefaultLineMapper<>();
defaultLineMapper.setLineTokenizer(delimitedLineTokenizer);
defaultLineMapper.setFieldSetMapper(beanWrapperFieldSetMapper);
reader.setRecordSeparatorPolicy(new DefaultRecordSeparatorPolicy());
reader.setLineMapper(defaultLineMapper);
reader.setLinesToSkip(3);
return reader;

}

Does anyone know how to configure this ?

0 Answers
Related