spring - 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 以将其作为输入读取。这里的任何帮助将不胜感激。提前致谢
解决方案
我遇到的所有教程都只是硬编码了 CSV 文件名和内存数据库
您可以在此处的官方 repo 中找到示例。这是一个示例,其中输入文件名不是硬编码而是作为作业参数传递的。
如何首先从共享位置获取 csv 文件并将其存储在内存或某处,然后配置 spring batch 以将其读取为输入。
您可以分两步进行:在本地下载文件,然后将其读取/处理/写入数据库(请参阅https://stackoverflow.com/a/52110781/5019386)。
如果网络共享驱动器与正则表达式匹配然后上传到数据库,我如何每天至少每 5-10 分钟轮询一小时网络共享驱动器。
一旦你定义了你的工作,你可以安排它在你想要的时候运行:
- 像Quartz这样的调度程序
- 或使用 Spring 的任务调度功能。
- 或者结合使用 Spring Integration 和 Spring Batch。Spring 集成将轮询目录,然后在适当的时候启动 Spring Batch 作业。此处描述了此方法。
有关作业调度的更多详细信息,请点击此处。
推荐阅读
- rust - 包含用于初始化 Trie 结构的大型源文件的 Rust crate 无法编译 (OOM)
- php - Wordpress 基于用户代理更改主题
- ruby-on-rails - 当我使用 sidekiq 时,ActionMailer::Base.deliveries 给出了空白数组?我们需要为此做任何配置吗
- php - Problem with displaying user-pictures relation in Laravel 5.8
- sql-server - 没有增量更新统计的分区表
- c++ - QLabel,去除边框和背景
- c - 带有 A9 的 Arduino - 对 AT 命令进行故障排除
- ruby-on-rails - 邪恶的 PDF - 将 fontawesome 图标显示为方形框
- amazon-web-services - 应用程序路径的 istio 路由问题
- javascript - undefined 不是 $ 附近的函数