【问题标题】:Is it possible to read static table data before batch job starts execution and use the data as metadata for the batch job是否可以在批处理作业开始执行之前读取静态表数据并将数据用作批处理作业的元数据
【发布时间】:2019-12-07 08:30:37
【问题描述】:

我正在尝试使用简单的选择查询读取数据并使用结果集数据创建一个 csv 文件。

到目前为止,我在 application.properties 文件中存在选择查询,并且能够生成 csv 文件。

现在,我想将查询移动到静态表,并在批处理作业开始之前将其作为初始化步骤获取(类似于之前的作业)。

您能否告诉我这样做的最佳策略是什么?即在获取数据和创建 CSV 文件的实际批处理作业开始之前从数据库中读取数据。

我能够读取数据并将其写入 CSV 文件

application.properties

extract.sql.query=SELECT * FROM schema.table_name

我希望它移动到数据库并在实际工作开始之前获取

【问题讨论】:

标签: spring-batch


【解决方案1】:

1) 我用一个步骤创建了一个作业(读然后写)。 2) 实现了 JobExecutionListener。在 beforeJob 方法中,使用 JdbcTemplate 从数据库中获取相关详细信息(在我的情况下为查询)。 3) 使用 jobExecution.getExecutionContext() ,我在执行上下文中设置查询。 4) 使用步进范围读取器使用后期绑定检索值。 @Value("#{jobExecutionContext['Query']}") 字符串 myQuery。 5) 这里成功的关键是传递一个占位符值null,这样编译就成功了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-18
    • 2020-12-07
    • 2011-10-07
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    相关资源
    最近更新 更多