Como ignorar linhas em branco no CSV usando FlatFileItemReader e pedaços
Estou processando arquivos CSV usando o FlatFileItemReader.
Às vezes, estou recebendo linhas em branco no arquivo de entrada.
Quando isso aconteceu, todo o passo para. Quero pular essas linhas e continuar normal.
Eu tentei adicionarmanipulador de exceção para a etapa, a fim de capturar a execução em vez de ter a etapa inteira curvada:
@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();
}
Como estou processando compedaços quando uma linha em branco chega e a exceção é detectada, o que acontece é que todo o bloco épulado(o pedaço pode conter linhas válidas no arquivo CSV e elas são ignoradas)
Alguma idéia de como fazer isso corretamente ao processar arquivos em pedaços?
Obrigado, ray.
Depois de editar meu código. ainda não está pulando:
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();
}