春季批处理读取CSV并将数据批量更新到MySQL



我有以下要求来编写弹簧批次。我想知道实现这一目标的最佳方法。

输入:包含报告数据的相对较大的文件(今天( 加工: 1.根据今天的报告数据更新每日表和月度表 每日表 - 只需根据 ID 更新计数 月度表:将今天的计数添加到现有值

我担心的是: 1.由于数据很大,我最终可能会有多个数据库事务。如何批量执行此操作? 2.要添加到月度表的现有计数中,我必须随身携带现有计数。我可能需要事先维护一张地图。但这是以这种方式处理的好方法吗?

请建议我应该遵循的方法或任何示例(如果有的话(?

谢谢。

您可以设计一个面向块的步骤,首先将文件中的每日数据插入到表中。此步骤完成后,您可以使用步骤执行侦听器,在afterStep方法中,您将拥有步骤执行的句柄,您可以在其中获取带有StepExecution#getWriteCount的写入计数。您可以将此计数写入月度表。

  1. 由于数据很大,我最终可能会有多个数据库事务。如何批量执行此操作?

通过面向块的步骤,数据已经批量写入(每个块一个事务(。即使您的输入文件很大,此模型也非常有效。

  1. 要添加到月表的现有计数中,我必须随身携带现有计数。我可能需要事先维护一张地图。但这是以这种方式处理的好方法吗?

无需将信息存储在映射中,如上所述,您可以从步骤之后的步骤执行中获取写入计数。

希望这有帮助。

最新更新