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 ?