【问题标题】:spring batch run sql script as a taskletspring批量运行sql脚本作为tasklet
【发布时间】:2016-05-25 18:58:19
【问题描述】:

spring batch 是否支持将 sql 脚本作为 tasklet 的一部分执行?以下是我计划使用 Spring Batch 开发的步骤序列。

对于第 2 步和第 4 步,我需要按顺序运行一堆 sql 语句。如何完成运行一个sql脚本?

  1. 读取 csv 文件并验证内容
  2. 如果内容有效,则执行删除现有表的 sql 脚本,并重新创建表、索引等
  3. 运行写入器操作将数据插入到表中。
  4. 运行 .sql 文件中描述的存储过程序列。

【问题讨论】:

  • 对于第 4 步,您可以使用标准块处理,filereader 读取存储过程,writer 执行它们

标签: spring spring-batch


【解决方案1】:

虽然我不认为 Spring Batch 专门支持您的要求,但您可以查看 ScriptUtils 以查看它是否提供了您正在寻找的行为。

如果没有,根据您的 SQL 的复杂性,可以选择在 Tasklet 中直接使用 JdbcTemplate 并创建一系列 Tasklets

【讨论】:

  • 谢谢瑞恩。你走近对我很好。但是,ScriptUtils 只是运行存储过程。但是,我看不到使用返回任何更新计数的方法。
  • 你是对的 - 该类中的大多数方法不返回任何内容。我不知道需要返回更新计数。如果是这种情况,您可能需要查看单独的 JdbcTemplates,或者如果让您的 SQL 存储更新到排序日志的记录数并从日志中检索值是可行的
  • 谢谢瑞恩。我会跟着你的驱动器
  • ScriptUtils (docs.spring.io/spring/docs/current/javadoc-api/org/…) 的链接非常有帮助,谢谢
猜你喜欢
  • 2016-01-03
  • 2019-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多