首页 > 数据库 >spring batch 框架进行元数据管理表 mysql

spring batch 框架进行元数据管理表 mysql

时间:2023-07-22 16:04:27浏览次数:35  
标签:EXECUTION spring batch JOB BIGINT mysql NULL ID

使用Spring Batch框架进行元数据管理表MySQL的实现

1. 简介

在进行大规模数据处理时,Spring Batch框架是一个非常有用的工具。它提供了一个强大的批处理框架,可以轻松地处理大量的数据,并具备事务管理、监控、错误处理等功能。为了进行元数据管理,我们可以使用MySQL数据库来存储和管理Spring Batch的元数据信息。

2. 实现步骤

步骤 描述
1. 创建数据库 在MySQL中创建一个数据库用于存储Spring Batch的元数据信息。可以使用以下SQL语句:
```sql

CREATE DATABASE spring_batch_metadata;

| 2. 创建元数据表 | 在前一步创建的数据库中创建Spring Batch的元数据表。可以使用以下SQL语句: |
| | ```sql
CREATE TABLE `spring_batch_metadata`.`BATCH_JOB_INSTANCE` (
  `JOB_INSTANCE_ID` BIGINT NOT NULL,
  `VERSION` BIGINT,
  `JOB_NAME` VARCHAR(100) NOT NULL,
  `JOB_KEY` VARCHAR(32) NOT NULL,
  PRIMARY KEY (`JOB_INSTANCE_ID`),
  UNIQUE INDEX `JOB_NAME_UNIQUE` (`JOB_NAME`)
);

CREATE TABLE `spring_batch_metadata`.`BATCH_JOB_EXECUTION` (
  `JOB_EXECUTION_ID` BIGINT NOT NULL,
  `VERSION` BIGINT,
  `JOB_INSTANCE_ID` BIGINT NOT NULL,
  `CREATE_TIME` DATETIME NOT NULL,
  `START_TIME` DATETIME DEFAULT NULL,
  `END_TIME` DATETIME DEFAULT NULL,
  `STATUS` VARCHAR(10),
  `EXIT_CODE` VARCHAR(2500),
  `EXIT_MESSAGE` VARCHAR(2500),
  `LAST_UPDATED` DATETIME,
  `JOB_CONFIGURATION_LOCATION` VARCHAR(2500) NULL,
  PRIMARY KEY (`JOB_EXECUTION_ID`),
  INDEX `JOB_INST_EXEC_FK` (`JOB_INSTANCE_ID`),
  CONSTRAINT `JOB_INST_EXEC_FK` FOREIGN KEY (`JOB_INSTANCE_ID`)
  REFERENCES `spring_batch_metadata`.`BATCH_JOB_INSTANCE` (`JOB_INSTANCE_ID`)
);

CREATE TABLE `spring_batch_metadata`.`BATCH_STEP_EXECUTION` (
  `STEP_EXECUTION_ID` BIGINT NOT NULL,
  `VERSION` BIGINT,
  `STEP_NAME` VARCHAR(100) NOT NULL,
  `JOB_EXECUTION_ID` BIGINT NOT NULL,
  `START_TIME` DATETIME NOT NULL,
  `END_TIME` DATETIME DEFAULT NULL,
  `STATUS` VARCHAR(10),
  `COMMIT_COUNT` BIGINT,
  `READ_COUNT` BIGINT,
  `FILTER_COUNT` BIGINT,
  `WRITE_COUNT` BIGINT,
  `EXIT_CODE` VARCHAR(2500),
  `EXIT_MESSAGE` VARCHAR(2500),
  `LAST_UPDATED` DATETIME,
  PRIMARY KEY (`STEP_EXECUTION_ID`),
  INDEX `JOB_EXEC_STEP_FK` (`JOB_EXECUTION_ID`),
  CONSTRAINT `JOB_EXEC_STEP_FK` FOREIGN KEY (`JOB_EXECUTION_ID`)
  REFERENCES `spring_batch_metadata`.`BATCH_JOB_EXECUTION` (`JOB_EXECUTION_ID`)
);
``` |
| 3. 配置数据源 | 在Spring Boot项目的配置文件(如application.properties或application.yml)中配置数据源信息,用于连接到MySQL数据库。例如: |
| | ```properties
spring.datasource.url=jdbc:mysql://localhost:3306/spring_batch_metadata
spring.datasource.username=root
spring.datasource.password=your_password
``` |
| 4. 配置Spring Batch | 在Spring Boot项目的配置类中配置Spring Batch以使用MySQL数据库作为元数据存储。可以使用以下代码: |

```java
@Configuration
@EnableBatchProcessing
public class BatchConfig {

    @Autowired
    private JobRepository jobRepository;

    @Autowired
    private PlatformTransactionManager transactionManager;

    @Bean
    public JobRepository jobRepository(DataSource dataSource, PlatformTransactionManager transactionManager) throws Exception {
        JobRepositoryFactoryBean jobRepositoryFactoryBean = new JobRepositoryFactoryBean();
        jobRepositoryFactoryBean.setDataSource(dataSource);
        jobRepositoryFactoryBean.setTransactionManager(transactionManager);
        jobRepositoryFactoryBean.setDatabaseType(DatabaseType.MYSQL.name());
        return jobRepositoryFactoryBean.getObject();
    }

    @Bean
    public JobLauncher jobLauncher(JobRepository jobRepository) {
        SimpleJobLauncher jobLauncher = new SimpleJobLauncher();
        jobLauncher.setJobRepository(jobRepository);
        return jobLauncher;
    }

    @Bean
    public StepBuilderFactory stepBuilderFactory(JobRepository jobRepository, PlatformTransactionManager transactionManager) {
        return new StepBuilderFactory(jobRepository, transactionManager);
    }

    @Bean
    public JobBuilderFactory jobBuilderFactory(JobRepository jobRepository) {
        return new JobBuilderFactory(jobRepository);
    }
}

| 5. 编写批处理任务 | 编写自定义的批处理任务,并通过上述配置中的JobBuilderFactory和StepBuilderFactory构建Job和Step。可以使用以下代码示例: |

@Configuration
public class BatchJob

标签:EXECUTION,spring,batch,JOB,BIGINT,mysql,NULL,ID
From: https://blog.51cto.com/u_16175432/6816438

相关文章

  • SpringCloud-Nacos配置中心实现原理(转)
    原文:https://blog.csdn.net/Zong_0915/article/details/113089265作者:Zong_0915 一.NacosConfig实现原理解析首先,NacosConfig针对配置的管理提供了4种操作):获取配置,从NacosConfigServer中读取配置。监听配置:订阅感兴趣的配置,当配置发生变化的时候可以收到一个事件。发布......
  • 修改MySQL读写模式
    修改MySQL读写模式MySQL是一个开源的关系型数据库管理系统,广泛应用于互联网应用和企业级应用中。在MySQL中,存在着读写模式的设置,可以根据实际需求来调整数据库的读写性能和一致性。本文将介绍如何修改MySQL的读写模式,并提供代码示例。1.了解MySQL读写模式在MySQL中,有两种常见的......
  • 写shell脚本一键编译安装MySQL
    一键编译安装MySQL的Shell脚本在Linux系统中,MySQL是一个非常常见的数据库管理系统。它提供了强大的功能和可靠的性能,因此在许多应用程序中被广泛使用。为了在Linux系统上运行MySQL,我们需要先进行编译安装。为了简化这个过程,我们可以编写一个Shell脚本来自动完成MySQL的编译和安装......
  • 在mysql底下导出表数据
    在MySQL数据库中导出表数据是一个常见的任务,它允许我们将表数据以可移植的方式保存到文件中,以便在需要时重新导入到数据库中。这对于数据备份、数据迁移和与其他数据库系统的交互非常有用。在MySQL中,我们可以使用mysqldump命令来导出表数据。这是一个命令行工具,可以在终端中使用。......
  • MySQL之视图检查选项
    MySQL之视图检查选项视图的检查选项当使用WITHCHECKOPTION子句创建视图时,MySQL会通过视图检查正在更改的每个行,例如插入,更新,删除,以使其符合视图的定义。MySQL允许基于另一个视图创建视图,它还会检查依赖视图中的规则以保持一致性。为了确定检查的范围,mysql提供了两个选项:CASC......
  • file /usr/share/mysql/charsets/macroman.xml from install of MySQL-server-5.6
    MySQL服务器和字符集在使用MySQL数据库时,字符集是一个非常重要的概念。它决定了数据库中存储的数据如何表示和解释。MySQL支持多种字符集,每个字符集都有自己的编码方式和规则。在安装MySQL服务器时,我们可能会遇到如下错误提示信息:file/usr/share/mysql/charsets/macroma......
  • 【大联盟】20230626 集查并(dsu) 题解 AT_toyota2023spring_final_g 【Git Gud】
    【大联盟】20230626集查并(dsu)题解AT_toyota2023spring_final_g【GitGud】zyx/bx题目描述here题解由于这场出了T2、验了T3(顺序是反的),所以赛时一直在想这个题,不过很遗憾不会。相当有意思的题。考虑合并两个点\(x,y\)时,对以后产生的贡献为\(\max\{f_x,f_y\}\),\(f_x......
  • springboot三
    神器之整合通用Mapper的开发方法通用mapper的开发方法是做练习的神器,它是基于mybatis的一款MyBatis增强插件,可以提供一些常用增、删、改、查的操作,不需要重复写一些常用的sql。简化操作,精简代码,并且达到代码风格统一的目的。它的出现不是为了替代mybatis,而是让myb......
  • 【Spring】@RequestBody的实现原理
    @RequestBody注解可以用于POST请求接收请求体中的参数,使用方式如下:@ControllerpublicclassIndexController{@PostMapping(value="/submit",produces=MediaType.APPLICATION_JSON_VALUE)publicvoidsubmit(@RequestBodyUserInfouserInfo){Sy......
  • MySQL之视图CRUD
    MySQL之视图CRUD介绍视图(View)是一种虚拟存在的表。视图中的数据并不在数据库中实际存在,行和列数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的。通俗的讲,视图只保存了查询的SQL逻辑,不保存查询结果。所以我们在创建视图的时候,主要的工作就落在创建这条SOL查询......