Как пропустить пустые строки в CSV, используя FlatFileItemReader и чанки
Я обрабатываю файлы CSV, используя FlatFileItemReader.
Иногда я получаю пустые строки во входном файле.
Когда это произошло, весь шаг останавливается. Я хочу пропустить эти строки и продолжить нормально.
Я пытался добавитьобработчик исключений к шагу, чтобы поймать выполнение вместо того, чтобы весь шаг был остановлен:
@Bean
public Step processSnidUploadedFileStep() {
return stepBuilderFactory.get("processSnidFileStep")
.<MyDTO, MyDTO>chunk(numOfProcessingChunksPerFile)
.reader(snidFileReader(OVERRIDDEN_BY_EXPRESSION))
.processor(manualUploadAsyncItemProcessor())
.writer(manualUploadAsyncItemWriter())
.listener(logProcessListener)
.throttleLimit(20)
.taskExecutor(infrastructureConfigurationConfig.taskJobExecutor())
.exceptionHandler((context, throwable) -> logger.error("Skipping record on file. cause="+ ((FlatFileParseException)throwable).getCause())),
.build();
}
Так как я обрабатываю сломти когда появляется пустая строка и ловится исключение, происходит то, что весь кусокпропускаются(блок может содержать допустимые строки в файле CSV, и они также пропускаются)
Любая идея, как это сделать правильно при обработке файла кусками?
Спасибо, Рэй.
После редактирования моего кода. еще не пропускаю
public Step processSnidUploadedFileStep() {
SimpleStepBuilder<MyDTO, MyDTO> builder = new SimpleStepBuilder<MyDTO, MyDTO>(stepBuilderFactory.get("processSnidFileStep"));
return builder
.<PushItemDTO, PushItemDTO>chunk(numOfProcessingChunksPerFile)
.faultTolerant().skip(FlatFileParseException.class)
.reader(snidFileReader(OVERRIDDEN_BY_EXPRESSION))
.processor(manualUploadAsyncItemProcessor())
.writer(manualUploadAsyncItemWriter())
.listener(logProcessListener)
.throttleLimit(20)
.taskExecutor(infrastructureConfigurationConfig.taskJobExecutor())
.build();
}