【问题标题】:Spring batch - easiest way to get number of total records in CSV?Spring batch - 获取 CSV 中总记录数的最简单方法?
【发布时间】:2021-07-01 06:29:15
【问题描述】:

我有一个以 CSV 格式读取的 spring 批处理应用程序。获取csv中记录数的最简单方法是什么?我是FlatFileItemReader<T>,我尝试在process() 方法中放置一个计数器,我们为Processor 覆盖该方法,我认为它会为csv 中的每一行递增,但我得到的整数非常奇数。我不能在我的 Writer() 实现类中这样做,因为我在我的处理器类中进行数据验证,所以如果有异常,记录大小会更小,它不会反映最初的真实记录数。

我只需要知道是否有人加载了一个有 300,000 条但只有 250,000 条写入数据库的文件,我想知道原始 csv 中的真实记录数。

【问题讨论】:

  • FlatFileItemReader 已经统计了所有读取的记录,你可以从那里得到。

标签: java spring csv spring-batch


【解决方案1】:

我只需要知道是否有人加载了一个有 300,000 条但只有 250,000 条写入数据库的文件,我想知道原始 csv 中的真实记录数。

您可以在StepExecutionListener#afterStep(StepExecution stepExecution) 中进行验证。此方法为您提供了对步骤执行的引用,它允许您获取所有计数器(如 read.countwrite.count 等)来实现您的逻辑。

【讨论】:

  • 这与使用 JobExplorer 并从那里获取 stepExecution 信息相比如何?另外,最好在哪里“注入”job explorer?我只是想检查一下,在运行 # 个作业之后,读取的数据、写入的数据是否匹配等等......并且退出代码是“COMPLETED”而不是其他一些失败......
  • JobExplorer 通常在作业之外使用,以便在事后探索作业存储库。我从您的要求中了解到,您希望从工作内部、在单独的步骤中或使用步骤/作业侦听器进行检查。
猜你喜欢
  • 2018-11-01
  • 1970-01-01
  • 2022-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-19
  • 1970-01-01
相关资源
最近更新 更多