我正在尝试使用 Spring 批处理框架编写一个作业。作业需要从集群 db2 数据库获取数据,对每个获取的记录调用一些逻辑,然后将转换后的数据存储在同一个数据库中(与读取数据的表不同)。我正在尝试写step1
如下,
@Bean
public Step step1(StepBuilderFactory stepBuilderFactory,
ItemReader<RemittanceVO> reader, ItemWriter<RemittanceClaimVO> writer,
ItemProcessor<RemittanceVO, RemittanceClaimVO> processor) {
return stepBuilderFactory.get("step1")
.<RemittanceVO, RemittanceClaimVO> chunk(100).reader(reader)
.processor(processor).writer(writer).build();
}
目前,由于数据库是 DB2 且是集群化的,我面临两个挑战,
1.
为元数据提供的 SQL 位于 -/org/springframework/batch/core/schema-db2.sql
不适合
分布式 DB2。命令失败,constraint JOB_INST_UN unique (JOB_NAME, JOB_KEY)
.
在此文件中写入的查询可以是
调整为分布式 db2 或者我也可以手动创建表,但我是
不确定是否应该手动创建表?如果那会有一些
进一步的并发症?
我需要所有这些表,因为我想使用 Spring Batch 来实现它PAUSE
, RESTART
功能。
2.
我们需要在 DB2 上触发所有 SELECT 查询
和READ ONLY WITH UR
所以
问题 https://stackoverflow.com/questions/27617273/adding-with-ur-or-any-other-prefix-in-query-being-generated-by-jdbcpagingitemr。
如果我们不使用此关键字运行查询,数据库可能会被锁定。
第 2 点的问题是我无法在 Spring Batch 的内置读取器类中使用(JdbcPagingItemReader
等),因为它们不支持此 db2 特定关键字。
通过阅读互联网上解释该框架优点的无用简单示例,我认为我将在很短的时间内启动并运行,但看起来我必须编写自己的查询提供程序类,研究元数据 sql 以及数据库发生时的情况成为 DB2 并分布式。
有没有人为分布式 Db2 数据库实现了类似的工作并在上述几点上指导我?