【问题标题】:How should I write a results file using Spring Batch我应该如何使用 Spring Batch 编写结果文件
【发布时间】:2016-02-18 01:44:47
【问题描述】:

我有一个包含以下步骤的 Spring Batch 导入过程:

  1. 以特定格式读取文件
  2. 保存人员、属性和约会的数据(每个文件行可能意味着多次插入多个表)
  3. 写入结果文件(主要是读取的结果,但有时我们无法将读取的数据处理成可以连贯插入的内容)

我目前在一组 Readers 中有 #1(每种文件格式一个),在单个 Writer 类中有 #2 和 #3。我觉得编写结果文件应该是与将数据写入数据库的单独步骤,但我不确定如何执行此操作。

我知道的选项是:

  1. 步进监听器
  2. 一个小任务 (?)

还有其他选项吗?Spring Batch 的设计方式是哪个选项?

【问题讨论】:

  • 结果文件是摘要还是...?你能提供更多关于那里发生的事情的描述吗?
  • 结果文件列出了导入的所有问题。因此,如果无法从一行中读取数据,则结果文件将包含一行。如果在读取数据时,我在数据库中找不到匹配的记录,则结果文件将有一行。每个输入行可能有 0 个结果行(成功)或每个输入行有多个结果行(多个问题)。
  • 又名坏记录文件。行。在处理器/编写器方面,您可以使用侦听器来处理它(该项目在出错时返回给侦听器,以便您可以相应地保留它)。但是,对于阅读错误,这是另一种动物,因为我们没有可以传递给您的项目(我们无法构建一个……这就是问题所在)。在这种情况下,您必须实现自己的阅读器来处理此问题。

标签: java spring spring-batch


【解决方案1】:

您可以将当前的ItemWriter 分成两个ItemWriters,并使用CompositeItemWriter 作为您的块写入器。这将按照您指定的顺序委托给您的两个作家。

【讨论】:

  • 不用担心回滚;它也在文件上得到保证
  • @LucaBassoRicci 好点,至少如果您使用的是FlatFileItemWriter。我把那部分省略了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-22
  • 2011-05-18
  • 1970-01-01
  • 2021-07-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多