0

当行数据中的列数少于标题时,Spring Batch FlatFileItemReader 失败。失败是显而易见的。它的 CSV 文件。但问题是它揭示了导致问题的行数据数据。如果严格不允许在日志中打印数据,有什么解决方法。

实现侦听器允许我们操作日志,但最后日志堆栈跟踪会显示实际数据。

FlatFileItemReader<OmegaCsvTransaction> flatFileItemReader  = new FlatFileItemReader<>();
flatFileItemReader.setResource(new FileSystemResource(path));
flatFileItemReader.setName("csvItemReader");
flatFileItemReader.setLinesToSkip(lineToSkip);
flatFileItemReader.setLineMapper(lineMapper(csvHeaderDto));
return flatFileItemReader;

提前感谢您的任何帮助/建议。StepExecutionListener 的方法 AfterStep 在记录异常后调用(错误描述具有保存数据的“行”。ItemListenerSuppor 的 onReadError 不允许更改 errorDescription 中的行数据。编写自己的 FlatFileItemReader 并自定义 doRead 是否有效?

我在 StepExecutionListener 的方法 AfterStep 的 db 中记录了错误的文件名。跳过坏线不是必需的。如果行的列数与标题不同,我的 LineMapper 会抛出 invalidPayload 异常。但在日志中,此异常晚于 FlatFileParseException (显示数据)。有没有办法在我抛出异常后立即停止行映射器中的执行。

感谢您的任何帮助/建议。

4

0 回答 0