首页 > 解决方案 > Spring批处理上传CSV文件并插入数据库

问题描述

我的项目有这个要求,用户上传一个 CSV 文件,该文件必须被推送到 sql server 数据库。我知道我们可以使用 Spring 批处理来处理大量记录。但是我找不到任何教程/示例代码来满足我的这个要求。我遇到的所有教程都只是硬编码了 CSV 文件名和内存数据库,如下所示:

https://spring.io/guides/gs/batch-processing/

用户输入文件在计划时间在共享驱动器位置可用,文件名前缀为例如:stack_overlfow_dd-MM-yyyy HH:mm,每天我如何每 5-10 分钟轮询网络共享驱动器,每天至少一小时如果它与正则表达式匹配,则上传到数据库。如何首先从共享位置获取 csv 文件并将其存储在内存或某处,然后配置 Spring Batch 以将其作为输入读取。这里的任何帮助将不胜感激。提前致谢

标签: springspring-mvcspring-bootspring-dataspring-batch

解决方案


我遇到的所有教程都只是硬编码了 CSV 文件名和内存数据库

您可以在此处的官方 repo 中找到示例。这是一个示例,其中输入文件名不是硬编码而是作为作业参数传递的。

如何首先从共享位置获取 csv 文件并将其存储在内存或某处,然后配置 spring batch 以将其读取为输入。

您可以分两步进行:在本地下载文件,然后将其读取/处理/写入数据库(请参阅https://stackoverflow.com/a/52110781/5019386)。

如果网络共享驱动器与正则表达式匹配然后上传到数据库,我如何每天至少每 5-10 分钟轮询一小时网络共享驱动器。

一旦你定义了你的工作,你可以安排它在你想要的时候运行:

  • Quartz这样的调度程序
  • 或使用 Spring 的任务调度功能。
  • 或者结合使用 Spring Integration 和 Spring Batch。Spring 集成将轮询目录,然后在适当的时候启动 Spring Batch 作业。此处描述了此方法。

有关作业调度的更多详细信息,请点击此处


推荐阅读