MySQL定时任务的实现(定时调用存储过程进行数据插入操作)

MySQL中,有时候我们需要维护表中的数据信息,例如定时清空某个表中的数据,定时对某个表的数据进行处理,定时将一个表的部分数据备份等等需要定时操作的步骤,mysql的定时任务都可以实现。

下面的案例是创建一个对表插入数据的存储过程,然后创建一个定时任务执行该存储过程。

创建一张关于环境数据的表wjs_dust_record_02;将设备获取到的环境数据信息存储到该表中。创建一个存储过程,作用是将一条数据插入到表中。设置定时器,每秒钟执行一次该存储过程,打开定时器,查看该表中的数据结果。主要操作步骤如下:

1,创建wjs_dust_record_02表:

CREATE TABLE `wjs_dust_record_02`  (
  `id` bigint(11) NOT NULL AUTO_INCREMENT COMMENT '主键id',
  `device_sn` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '设备编号',
  `upload_time` datetime(0) NULL DEFAULT NULL COMMENT '上传时间',
  `temperature` int(11) NULL DEFAULT NULL COMMENT '温度',
  `humidity` int(11) NULL DEFAULT NULL COMMENT '湿度',
  `atmospheric_pressure` int(11) NULL DEFAULT NULL COMMENT '气压',
  `wind_speed` int(11) NULL DEFAULT NULL COMMENT '风速',
  `wind_direction` int(11) NULL DEFAULT NULL COMMENT '风向',
  `tsp` int(11) NULL DEFAULT NULL COMMENT '总悬浮颗粒物TSP',
  `pm10` int(11) NULL DEFAULT NULL COMMENT '可吸入颗粒物pm10',
  `pm2p5` int(11) NULL DEFAULT NULL COMMENT '细微颗粒物pm2.5',
  `noise` int(11) NULL DEFAULT NULL COMMENT '噪声',
  `create_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`) USING BTREE,
  INDEX `upload_time_idx`(`upload_time`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1492587 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '扬尘设备上传记录' ROW_FORMAT = Dynamic;

SET FOREIGN_KEY_CHECKS = 1;

2,创建名为timingpro 的存储过程

#创建存储过程

CREATE PROCEDURE timingpro ( )

BEGIN

insert into wjs_dust_record_02 (device_sn, upload_time, pm10, pm2p5, tsp) values('4058745992445', now(), 156, 335, 80);

END;

3,创建定时器timingJob:

#创建定时器
create event if not exists timingJob
on schedule every 1 second
on completion PRESERVE
do call timingpro();

4,打开定时器/关闭定时器

#启动定时器
SET GLOBAL event_scheduler = 1;
#停止定时器
SET GLOBAL event_scheduler = 0;

5,开启定时事件(默认是开启的,如果打开定时器,存储过程没执行就是事件未开启)

#开启事件
ALTER EVENT timingJob ON  COMPLETION PRESERVE ENABLE;  
#关闭事件
ALTER EVENT timingJob ON  COMPLETION PRESERVE DISABLE;

6,查看定时器的状态(event_scheduler值为OFF表示定时器关闭的,只需要执行步骤4打开定时器即可)

#查看定时器状态
SHOW VARIABLES LIKE '%sche%'; 

查看结果,表wjs_dust_record_02中每秒钟被插入了一条数据:

 

 

 

 

 

 

 

 

 

 

 

 

  • 5
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Spring Boot提供了很好的支持来实现定时任务,并且可以使用多种方式实现Oracle和MySQL数据的同步。 一种常见的方法是使用Spring Boot的定时任务功能来定期执行数据同步操作。首先,需要配置数据源以分别连接到Oracle和MySQL数据库。可以使用Spring Boot的自动配置功能来轻松地配置这些数据源。接下来,在应用程序中创建一个定时任务类,使用Spring的@Scheduled注解来指定定时任务的执行时间。在定时任务的方法中,可以使用Spring的JdbcTemplate来执行SQL查询和更新操作,从Oracle读取数据,并将其插入MySQL中。同样,可以从MySQL读取数据并更新到Oracle。 另一种方法是使用Spring Batch来实现数据同步。Spring Batch是一个功能强大的批处理框架,可以用于大规模、复杂的数据处理任务。首先,需要定义一个包含从Oracle读取数据并将其插入MySQL的步骤的作业。可以使用Spring Batch的JobBuilderFactory和StepBuilderFactory来定义和配置作业和步骤。接下来,可以使用Chunk-oriented处理模型来处理大量数据。可以使用Spring Batch的ItemReader来读取Oracle中的数据,使用ItemProcessor来对数据进行转换和处理,最后使用ItemWriter将数据写入MySQL。 无论使用哪种方法,需要注意的是需要配置正确的数据库连接参数,并确保定时任务能够准时执行。此外,可以使用日志记录来跟踪定时任务的执行情况,以便及时处理任何错误或异常。 综上所述,Spring Boot可以很方便地实现Oracle和MySQL数据定时同步任务。无论使用哪种方法,都需要正确配置数据库连接参数,并使用合适的工具和技术来读取和写入数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是王小贱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值