2
我正在使用FlatFileItemReader處理CSV文件。如何使用FlatFileItemReader和塊跳過CSV中的空行
有時我在輸入文件中出現空行。
發生這種情況時,整個步驟停止。我想跳過這些線並繼續正常。
我試圖異常處理程序添加步驟,以趕上,而不必彎腰整個步驟execption:
@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文件行,並且也跳過)
任何想法如何做到這一點權利whe n以塊的形式處理文件?
謝謝, 射線。
編輯我的代碼後。仍然沒有跳繩:
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();
}