当我在应用程序属性中添加表前缀时,我遇到了一个问题,Spring Batch没有获取该属性并设置默认前缀Batch。
spring.batch.table-prefix=SOMETHING.BATCH_
Spring版
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.4.RELEASE</version>
</parent>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.0.4.RELEASE</version>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-batch</artifactId>
<version>2.1.2.RELEASE</version>
</dependency>
org.springframework.jdbc.错误的SQL语法[SELECTJOB_INSTANCE_ID,JOB_NAMEBATCH_JOB_INSTANCEJOB_NAME=?和JOB_KEY = ?]; 嵌套异常java.sql.SQLSyntaErrorException: ORA-00942: table or view不存在
我解决了问题,效果很好。
我注入了一个用JobRepositoryFactoryBean创建的新JobRepository。在JobRepositoryFactoryBean中,我配置了数据源和前缀,当作业启动时,JdbcJobInstanceDao具有前缀。
我分享解决方案:
private PlatformTransactionManager transactionManager(){
return new ResourcelessTransactionManager();
}
private JobRepository createJobRepository() throws Exception {
JobRepositoryFactoryBean factory = new JobRepositoryFactoryBean();
factory.setDataSource(dataSourceAudit);
factory.setTransactionManager(transactionManager());
factory.setIsolationLevelForCreate("ISOLATION_READ_COMMITTED");
factory.setTablePrefix("SOMETHING.BATCH_");
factory.setDatabaseType("ORACLE");
factory.setMaxVarCharLength(1000);
return factory.getObject();
}
@Bean
public JobLauncher jobLauncherBc() throws Exception{
SimpleJobLauncher jobLauncher = new SimpleJobLauncher();
jobLauncher.setTaskExecutor(new SimpleAsyncTaskExecutor());
jobLauncher.setJobRepository(createJobRepository());
return jobLauncher;
}
在Spring batch中(请参见https://docs.Spring.io/spring-batch/3.0.x/reference/html/metadataschema.html),有六个表: batch_job_execution batch_job_execution_context batch_job_execution_params batch_job_instance batc
我想为spring批处理使用不同的数据源,并创建了下面的配置类,并根据文档将我所需的数据源自动连接到该类。 我使用的是spring boot(2.2.6)和spring batch版本4.2.1。释放 但当我用它启动应用程序时,它从不应用setTablePrefix,并且总是会失败,出现table not found错误。 我需要使用上面的方法,因为我有两个不同的数据源,我需要spring批处理来
我有以下工作要处理在一定的时间间隔或特别的基础上。 作业中的步骤如下: 我也想要用户界面,在那里我可以触发一个特别的基础上的工作,而且我应该能够提供参数从用户界面。 我想用Spring batch来完成这个任务,但它更多的是用于读->处理->写之类的工作。这里,在第一步中,我正在生成由第二步读取的数据。我不确定我是否还可以使用Spring batch来实现这个,或者有更好的方法来实现这个。
我有一个compositeItemWriter,它有2个代理编写器:1。HeaderWriter将一些字段从我的对象写入头表2。DetailWriter将文件写入详细表。 context.xml:
我们开发了一个Spring批处理应用程序,其中我们有两个流程。1.向前2.向后。我们只使用文件读/写,不涉及数据库。 > 正向场景:输入文件将包含22个字段的记录。通过执行序列号生成和添加一些填充字段等操作,将22个字段转换为32个字段。根据国家代码,输出将被分成最多3个。每个块将有250K条记录。(如果记录以百万为单位,则将为同一国家生成多个文件)。 800万张唱片需要36分钟。 800万记录将
反正可以禁用SQL,我只是想测试我的读写器和处理器工作正常。