MySQL 存储过程 定时任务

摘要:
dropprocedureifexistsmove_track_data;delimiter//createproceduremove_track_data()begindeclareiintdefault0;starttransaction;seti=1;casewheni=1thenselect'is1';wheni=2thenselect'is2';elseselect'is3';endca
drop procedure if existsmove_track_data;
delimiter //
create proceduremove_track_data()
begin
    declare i int default 0;
    start transaction;
    set i = 1;
    case
        when i = 1 then
            select 'is 1';
        when i = 2 then
            select 'is 2';
        else
            select 'is 3';
    end case;
    commit;
end;
//
call move_track_data();
delimiter ;
select * from score_driving_track where trackid in( select trackid from score_driving_track where trackid % 10 = 1);

insert into score_driving_track_0 select * from score_driving_track where trackid in( select trackid from score_driving_track where trackid % 10 =0);

####################################################################################################3

set time_zone = '+8:00';
set GLOBAL event_scheduler = 1;
usetest;  
drop event if existsupload_to_sdmp;    
DELIMITER //
createevent upload_to_sdmp   
on schedule every 1 week starts timestamp '2015-10-12 02:00:00'do call move_score_driving_track_data();

drop procedure if existsmove_score_driving_track_data;
delimiter //
create proceduremove_score_driving_track_data()
begin
    declare i int default 0;
    declare t_error integer default 0;   
    declare continue handler for sqlexception set t_error = 1;
    start transaction;
    set i = 0;
    while i < 10do
        set @sqlTrackids = concat('select group_concat(distinct trackid) into @trackids  from score_driving_track where trackid % 10 = ', i);
        select @sqlTrackids;
        prepare sqlTrackidsNormal from @sqlTrackids;
        executesqlTrackidsNormal;
        select @trackids;
        
        set @sqlInsert = concat('insert into score_driving_track_', i,  'select * from score_driving_track where find_in_set(trackid, ''', @trackids, ''')');
        select @sqlInsert;
        prepare sqlInsertNormal from @sqlInsert;
        executesqlInsertNormal;
        
        set @sqlDelete = concat('delete from score_driving_track', 'where find_in_set(trackid ,''', @trackids, ''')');
        select @sqlDelete;
        prepare sqlDeleteNormal from @sqlDelete;
        #executesqlDeleteNormal;
        
        set i = i + 1;
    end while;
    if t_error = 1 then  
       rollback;
    else
       commit;
    end if;
end;
//call move_score_driving_track_data();
SELECT @@global.sort_buffer_size;

select * from score_driving_track where trackid >= 2270;
select * fromscore_driving_track_0;
select * fromscore_driving_track_1;
select * fromscore_driving_track_2;
select * fromscore_driving_track_3;
select * fromscore_driving_track_4;
select * fromscore_driving_track_5;
select * fromscore_driving_track_6;
select * fromscore_driving_track_7;
select * fromscore_driving_track_8;
select * fromscore_driving_track_9;

delete fromscore_driving_track_0;
delete fromscore_driving_track_1;
delete fromscore_driving_track_2;
delete fromscore_driving_track_3;
delete fromscore_driving_track_4;
delete fromscore_driving_track_5;
delete fromscore_driving_track_6;
delete fromscore_driving_track_7;
delete fromscore_driving_track_8;
delete fromscore_driving_track_9;

SET GLOBAL group_concat_max_len=1024000; 

show variables like"group_concat_max_len"; 
#####################################################################################









call move_score_driving_track_data();
SELECT @@global.sort_buffer_size;


SET GLOBAL group_concat_max_len=1024000; 

show variables like"group_concat_max_len"; 

select group_concat(distinct trackid)  from score_driving_track where trackid % 10 = 0;
SELECT @@global.group_concat_max_len;
show warnings;
#[mysqld]#explicit_defaults_for_timestamp=true
#group_concat_max_len=102400
select distinct trackid  from score_driving_track where trackid % 10 = 0;


select group_concat(distinct trackid)  from score_driving_track where trackid % 10 = 0 and trackid < 50;

delimiter ;
select concat('score_driving_track_', 1);

select * fromscore_driving_track_0;

delete fromscore_driving_track_0;

##############################################################################
set time_zone = '+8:00';
set GLOBAL event_scheduler = 1;
usetest;  
drop event if existsupload_to_sdmp;    
DELIMITER //
createevent upload_to_sdmp   
on schedule every 1 second #starts timestamp '2014-07-30 10:00:00'do
begin
    insert into b values(3,'222');  
    insert into b values(2,'222');
end
//DELIMITER ;  

select * fromb;

select group_concat(trackid) into @temp  from score_driving_track where trackid < 100;
select @temp;
select * from score_driving_track where find_in_set(trackid, @temp);
select REPLACE(@temp,'''''''','');

select CHAR_LENGTH(@temp)-CHAR_LENGTH(REPLACE(@temp,'','')) + 1;


select * from score_driving_track where trackid in (select group_concat(trackid)  from score_driving_track where trackid < 50);

select * from score_driving_track where find_in_set(trackid, (select group_concat(distinct trackid)  from score_driving_track where trackid < 50));


select * from users;

免责声明:文章转载自《MySQL 存储过程 定时任务》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇基于AngularJs的上传控件-angular-file-uploadCSS命名规范下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

es 按照日期字段,统计每天总数

SELECT count(*) FROM share_lhy_violation GROUP BY date_histogram(field='wfsj_date','interval'='1d','alias'='wfsj', 'format'='yyyy-MM-dd', 'time_zone'='+08:00', 'min_doc_count'=1,o...

用脚本完成mysql工作

1. 用mysql -e在脚本中执行mysql的sql语句 #!/bin/bash #simple mysql shell usage logtime=`date "+%Y-%m-%d"` LOG=call_sql_${logtime}.log echo "Start execute sql statement at `date`" >>${...

oracle教程:PLSQL常用方法汇总

oracle教程:PLSQL常用方法汇总 在SQLPLUS下,实现中-英字符集转换alter session set nls_language='AMERICAN';alter session set nls_language='SIMPLIFIED CHINESE';主要知识点:一、有关表的操作1)建表 create table test as sel...

MySQL 5.7最新版本的2个bug

好久没写博客了,都长草了。新业务上了5.7没遇到什么问题,虽然没遇到什么问题,但不代表没有问题,我有个习惯就是没事就喜欢逛逛percona的Blog,于是看到目前最新GA版本5.7.17的2个bug,于是就搭建环境进行bug复现。目前知道的2个bug如下: 1. slave_parallel_workers > 0,也就是开启了多线程复制的时候如果有...

Mybatis模糊查询MySQL中记录的的常用三种方法

mybatis的模糊查询功能使用的很广泛,以MySQL数据库为例(不同的数据库,有些可能不支持)常用的模糊查询有三种方法: 直接使用 % 拼接字符串,如'%'#{name}'%'或"%"#{name}"%",单引号或双引号都可以。 使用concat(str1,str2)函数拼接 使用mybatis的bind标签 现在有数据库mybatis1中表user...

ClickHouse学习系列之五【系统库system说明】

背景   之前介绍过ClickHouse相关的系列文章,现在ClickHouse已经能正常使用起来了,包括副本和分片。因为ClickHouse已经可以提供服务了,现在需要关心的就是服务期间该数据库的各项性能指标的情况,如CPU、内存、查询等等。其实在安装完ClickHouse之后,有个内置的数据库system,该库下保存了很多需要的信息,类似于MySQL中...