mysql定时删除6个月前的表

查看定时是否开启:

查看event是否开启 : SHOW VARIABLES LIKE '%event_sche%';
将事件计划开启 : SET GLOBAL event_scheduler = 1;
将事件计划关闭 : SET GLOBAL event_scheduler = 0;

代码:

BEGIN
    -- 保存表名
    DECLARE v_tableName varchar(40) DEFAULT 0;
    -- 时间
    -- DECLARE v_datetime DATETIME;
    -- DECLARE v_datetime TIMESTAMP;
  --  遍历结束标记
  DECLARE done INT DEFAULT FALSE;
  -- 找出要删除的表名
    DECLARE cursor_table CURSOR FOR 
    SELECT TABLE_NAME FROM information_schema.`TABLES` 
    WHERE TABLE_NAME like 'info_illegal_web_%' AND TABLE_SCHEMA = 'ydb_illegal_data_his' AND LENGTH(TABLE_NAME) = 25;
  -- 将结束标志绑定到游标
   DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
    -- 设置时间
    -- SET v_datetime = UNIX_TIMESTAMP(DATE_SUB(SYSDATE(),INTERVAL 3 DAY));
  -- 打开游标
   OPEN cursor_table;
  
  -- 开始循环
  read_loop: LOOP
    FETCH cursor_table INTO v_tableName;
        
        -- 如果没有数据,退出
    IF done THEN
      LEAVE read_loop;
    END IF;

        -- 删除数据
        IF DATE(SUBSTR(v_tableName, 18)) <= DATE_SUB(CURDATE(),INTERVAL 6 MONTH) THEN
            SET @STMT :=CONCAT("DROP TABLE ",v_tableName);
            PREPARE STMT FROM @STMT;   
            EXECUTE STMT; 
            DEALLOCATE PREPARE STMT;
        END IF;
  END LOOP;

END

 

MySQL定时删除数据通常可以通过创建定时任务来实现,MySQL本身不提供直接的定时删除功能,但可以通过以下两种方法来实现: 1. 使用`cron`作业(适用于Linux/Unix系统): 在服务器上设置一个定时任务(cron job),通过命令行定时执行`DELETE`语句来删除数据。首先编写一个SQL脚本,例如`cleanup.sql`,里面包含删除数据的命令: ```sql DELETE FROM your_table WHERE condition; ``` 然后设置一个cron作业来定时执行这个SQL脚本。编辑crontab文件: ```bash crontab -e ``` 添加一条定时规则,例如每天凌晨执行: ```bash 0 0 * * * /usr/bin/mysql -u username -p --database=dbname < /path/to/cleanup.sql ``` 保存退出后,crontab会按照设置的时间周期性地执行删除操作。 2. 使用MySQL的事件调度器: MySQL从5.1版本开始提供了事件调度器(Event Scheduler),可以用来定期执行SQL语句。首先,需要检查MySQL事件调度器是否开启: ```sql SHOW VARIABLES LIKE 'event_scheduler'; ``` 如果返回的结果中`event_scheduler`的值为`OFF`,则需要手动开启: ```sql SET GLOBAL event_scheduler = ON; ``` 然后创建一个事件来定期删除数据,例如创建一个每天执行一次的事件: ```sql CREATE EVENT IF NOT EXISTS event_cleanup ON SCHEDULE EVERY 1 DAY DO DELETE FROM your_table WHERE condition; ``` 这样就会在MySQL服务器上设置一个名为`event_cleanup`的事件,每天执行一次删除操作。 注意:在执行定时删除操作时,需要考虑到操作对数据库性能的影响,以及事务的完整性和数据的一致性,确保不会误删重要数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值