zoukankan      html  css  js  c++  java
  • mysql定时任务

      1. -- 数据库中表的信息查询  
      2. ##SELECT TABLE_NAME,TABLE_ROWS, CREATE_TIME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'bdata'  ORDER BY TABLE_ROWS DESC  
      3. ##select count(*) from (SELECT TABLE_NAME,TABLE_ROWS, CREATE_TIME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'bdata'  ORDER BY TABLE_ROWS DESC) as temp;  
      4. /*  
      5. DELIMITER $$  
      6. drop procedure if exists deleteTables $$  
      7. --   
      8. -- 实例  
      9. -- 存储过程名为:delateTables  
      10. -- 参数:没有参数  
      11. --  
      12. create procedure deleteTables ()  
      13. begin  
      14. declare tablename varchar(255); -- 待删除的表的名称  
      15. declare done int default false;-- 遍历数据结束标志  
      16. declare continue handler for not found set done = true;   -- 将结束标志绑定到游标  
      17. declare rs cursor for select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_SCHEMA = 'bdata' and TABLE_ROWS<100; -- 声明游标来实现遍历记录  
      18. open rs; -- 打开游标  
      19.   
      20. -- 开始循环  
      21. read_loop: LOOP  
      22.    -- 提取游标里的数据,这里只有一个,多个的话也一样;  
      23.     FETCH cur INTO a;  
      24.     SELECT a;  
      25.   
      26.     -- 声明结束的时候  
      27.     IF done THEN  
      28.       LEAVE read_loop;  
      29.     END IF;  
      30.     -- 这里做你想做的循环的事件     
      31.   
      32.   END LOOP ;  
      33.   -- 关闭游标  
      34.   CLOSE cur;  
      35.   
      36.   
      37.   
      38. end $$  
      39. DELIMITER ;  
      40.   
      41. call deleteTables;  
      42.   
      43. */  
      44. delimiter $$  
      45. DROP PROCEDURE IF EXISTS deletetables $$   
      46. --   
      47. -- 实例   
      48. -- 存储过程名为:delateTables   
      49. -- 参数:没有参数   
      50. --   
      51. CREATE PROCEDURE deletetables ()   
      52. BEGIN   
      53.   DECLARE tablename VARCHAR(255);     -- 待删除的表的名称   
      54.   DECLARE done INT DEFAULT FALSE;-- 遍历数据结束标志   
      55.    
      56.   DECLARE cur CURSOR FOR SELECT table_name FROM   information_schema.tables  WHERE  table_schema = 'bdata' AND table_rows<100; -- 声明游标来实现遍历记录  
      57.   
      58.   DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; -- 将结束标志绑定到游标    
      59.   OPEN cur;   -- 打开游标   
      60.   
      61. -- 下面是利用游标执行循环的部分  
      62.   -- 开始循环   
      63.   READ_LOOP: LOOP   
      64.       -- 提取游标里的tb_myisam数据,这里只有一个,多个的话也一样;   
      65.       FETCH cur INTO  tablename;      
      66.       -- DROP TABLE tablename;   
      67.       -- 声明结束的时候   
      68.       IF done THEN  
      69.         LEAVE READ_LOOP;   
      70.       END IF;   
      71.       -- 一些敏感操作  
      72.        
      73.       SELECT tablename;   
      74.   
      75.       SET @sqlstr=concat("drop table ", tablename);    
      76.       prepare stmt from @sqlstr;    
      77.       EXECUTE stmt;             
      78.       deallocate prepare stmt;   
      79.    END LOOP ;   
      80.    -- 关闭游标  
      81.    CLOSE cur;  
      82. END $$   
      83. delimiter ;  
      84. -- CALL deletetables;  
      85.   
      86. create event if not exists event_deletetables_rowslessthan100    
      87. on schedule every 1 day  
      88. on completion preserve    
      89. do call deletetables();  

      2. 事件查看
      [sql] view plain copy
       
      1. #查看是否开启事件  
      2. show variables like '%sche%';   
      3.   
      4. ##开启事件   
      5. set global event_scheduler = 1;  
      6.   
      7. /*  
      8.   
      9. create event if not exists e_deletetables_rowsless100    
      10. on schedule every 1 day    
      11. on completion preserve    
      12. do call deletetables();  
      13. */  
      14.   
      15.   
      16.   
      17. ##注意分隔符的使用  
      18. /*  
      19. DELIMITER $$  
      20. CREATE PROCEDURE test ()  
      21. begin  
      22. update student set name = now() where NO = '2012001';  
      23. end $$  
      24. DELIMITER ;  
      25. */  
      26. ##创建事件  
      27. /*  
      28. create event if not exists e_test    
      29. on schedule every 5 second    
      30. on completion preserve    
      31. do call test();  
      32.   
      33. */  
      34. ##关闭事件任务  定时任务  
      35. #alter event e_test ON COMPLETION PRESERVE DISABLE;  
      36. ##开启事件任务  
      37. #alter event e_test ON COMPLETION PRESERVE ENABLE;   

      3. 定时任务测试
      [sql] view plain copy
       
      1. ##查看是否开启事件  
      2. show variables like '%sche%';   
      3.   
      4. ##开启事件   
      5. set global event_scheduler = 1;  
      6.   
      7. ##注意分隔符的使用  
      8. /*  
      9. DELIMITER $$  
      10. CREATE PROCEDURE test ()  
      11. begin  
      12. update student set name = now() where NO = '2012001';  
      13. end $$  
      14. DELIMITER ;  
      15. */  
      16. ##创建事件  
      17. /*  
      18. create event if not exists e_test    
      19. on schedule every 5 second    
      20. on completion preserve    
      21. do call test();  
      22.   
      23. */  
      24. ##关闭事件任务  定时任务  
      25. #alter event e_test ON COMPLETION PRESERVE DISABLE;  
      26. ##开户事件任务  
      27. #alter event e_test ON COMPLETION PRESERVE ENABLE;   
      28.   
      29. #select table_name from information_schema.tables where table_schema='bdatadd'  
      30.   
      31. #select TABLE_NAME from (select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_SCHEMA = 'bdata' and TABLE_ROWS<100) as temp limit 0,1;  
      32. /*  
      33. DELIMITER $$  
      34.   
      35. #drop procedure if exists new_procedure $$  
      36.   
      37. CREATE PROCEDURE `bdata`.`new_procedure` ()  
      38. BEGIN  
      39. -- 需要定义接收游标数据的变量   
      40.   DECLARE a VARCHAR(255);  
      41.     
      42.   -- 遍历数据结束标志  
      43.   DECLARE done INT DEFAULT FALSE;  
      44.    
      45.   
      46.    -- 游标  
      47.   DECLARE cur CURSOR FOR SELECT name FROM bdata.student;  
      48.  -- 将结束标志绑定到游标  
      49.   DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;  
      50.     
      51.   -- 打开游标  
      52.   OPEN cur;  
      53.     
      54.   -- 开始循环  
      55.   read_loop: LOOP  
      56.     -- 提取游标里的数据,这里只有一个,多个的话也一样;  
      57.     FETCH cur INTO a;  
      58.     SELECT a;  
      59.   
      60.     -- 声明结束的时候  
      61.     IF done THEN  
      62.       LEAVE read_loop;  
      63.     END IF;  
      64.     -- 这里做你想做的循环的事件     
      65.   
      66.   END LOOP ;  
      67.   -- 关闭游标  
      68.   CLOSE cur;  
      69.   
      70. END $$  
      71. DELIMITER ;  
      72.   
      73. call new_procedure;  
      74. */  
      4. 查看表
      [sql] view plain copy
       
      1. #show tables like 'mkk_data_%';  
      2. #use ptimpdb;  
      3. #select table_name,table_rows from information_schema.columns where table_schema = "ptimpdb" and table_name like'mkk_data_%' ORDER BY TABLE_ROWS DESC;  
      4. #select table_name from information_schema.columns where table_schema = "ptimpdb" and table_name like'mkk_data_%'group by table_name;  
      5. #select count(*) as res from  (select table_name from information_schema.columns where table_schema = "pdb" and table_name like'mkk_data_%'group by table_name)  
      6. #select count(*) as res from mkk_data_10  
      7.   
      8. ##数据库查询表的结果  
      9. #SELECT TABLE_NAME,TABLE_ROWS, CREATE_TIME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'pdb' AND TABLE_NAME LIKE'mkk_data_%' AND  TABLE_ROWS < 100 ORDER BY TABLE_ROWS DESC;  
      10.   
      11.   
      12. #SELECT TABLE_NAME,TABLE_ROWS, CREATE_TIME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'pdb' AND TABLE_NAME LIKE'mkk_data_%' AND  TABLE_ROWS < 100 ORDER BY TABLE_ROWS DESC;  
      13.   
      14.   
      15. delimiter $$  
      16. DROP PROCEDURE IF EXISTS deletetables $$   
      17. --   
      18. -- 实例   
      19. -- 存储过程名为:delateTables   
      20. -- 参数:没有参数 deletetables  
      21. --   
      22. CREATE PROCEDURE deletetables ()   
      23. BEGIN   
      24.   DECLARE tablename VARCHAR(255);     -- 待删除的表的名称   
      25.   DECLARE done INT DEFAULT FALSE;-- 遍历数据结束标志   
      26.    
      27.   DECLARE cur CURSOR FOR SELECT table_name FROM   information_schema.tables  WHERE  table_schema = 'pdb' AND table_rows<100; -- 声明游标来实现遍历记录  
      28.   
      29.   DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; -- 将结束标志绑定到游标    
      30.   OPEN cur;   -- 打开游标   
      31.   
      32. -- 下面是利用游标执行循环的部分  
      33.   -- 开始循环   
      34.   READ_LOOP: LOOP   
      35.       -- 提取游标里的tb_myisam数据,这里只有一个,多个的话也一样;   
      36.       FETCH cur INTO  tablename;      
      37.       -- DROP TABLE tablename;   
      38.       -- 声明结束的时候   
      39.       IF done THEN  
      40.         LEAVE READ_LOOP;   
      41.       END IF;   
      42.       -- 一些敏感操作  
      43.        
      44.       SELECT tablename;   
      45.   
      46. /*    ## 动态sql语句的构建  
      47.       SET @sqlstr=concat("drop table ", tablename);    
      48.       prepare stmt from @sqlstr;    
      49.       EXECUTE stmt;             
      50.       ddeletetableseallocate prepare stmt;   
      51. */  
      52.         
      53.    END LOOP ;   
      54.    -- 关闭游标  
      55.    CLOSE cur;  
      56. END $$   
      57. delimiter ;  
      58.   
      59.   
      60.   
      61.   
      62. -- CALL deletetables;  
  • 相关阅读:
    Xshell连接阿里云Centos6.8
    vsftpd文件服务器安装与配置
    JDK安装(linux系统)
    网站架构
    linux软件源配置
    java 调用静态方法和构造函数和静态块执行的先后顺序
    Mybatis的WHERE和IF动态
    MAVEN项目(仓库中没有jar包)
    Shiro
    MVC系列学习(六)-Razor语法
  • 原文地址:https://www.cnblogs.com/givemelove/p/8328828.html
Copyright © 2011-2022 走看看