mysql 定时分库分表

DELIMITER $$
CREATE DEFINER=`root`@`%` PROCEDURE `create_apicall_asr_record_call`(IN `dayStr` varchar(20),out result int)
    COMMENT 'openspeech api_call 按日建表'
BEGIN 
    set @sql_tmp3 = CONCAT('create table openspeech_day_query_',DATE_FORMAT(date_sub(dayStr,interval 1 day),'%Y%m%d'),' like openspeech_day_query_0 ');       
    PREPARE stmt3 FROM @sql_tmp3;
    EXECUTE stmt3;
    DEALLOCATE PREPARE stmt3;
  set @engine_tab =  CONCAT('openspeech.api_call');
  set @sql_tmp_insert =  
  CONCAT('INSERT INTO ',  
    CONCAT('openspeech_day_query_',DATE_FORMAT(date_sub(dayStr,interval 1 day),'%Y%m%d')),'(`query_str`,`service`,`trigger_date`,`query_times`,`app_key`)',' select `query`,service,trigger_date,1,app_key from ',
                'openspeech.api_call',' where ','trigger_date >= "',DATE_FORMAT(date_sub(dayStr,interval 1 day),'%Y-%m-%d %H:%i:%s'),'" and trigger_date < "',DATE_FORMAT(date_sub(dayStr,interval 0 day),'%Y-%m-%d %H:%i:%s'),'"');
  set @sql_tmp_insert_day_count = CONCAT('INSERT INTO day_count','(time_str,count)',' select "', DATE_FORMAT(date_sub(dayStr,interval 1 day),'%Y-%m-%d'),'", count(1) from openspeech.api_call where ','trigger_date >= "',DATE_FORMAT(date_sub(dayStr,interval 1 day),'%Y-%m-%d %H:%i:%s'),'" and trigger_date < "',DATE_FORMAT(date_sub(dayStr,interval 0 day),'%Y-%m-%d %H:%i:%s'),'"');
  
  set @sql_tmp_delete2 = CONCAT('DELETE FROM ','openspeech_day_query_',DATE_FORMAT(date_sub(dayStr,interval 1 day),'%Y%m%d'),' where query_str = ""');
  PREPARE stmt_insert FROM @sql_tmp_insert;
    EXECUTE stmt_insert;
    DEALLOCATE PREPARE stmt_insert;
  PREPARE stmt_insert1 FROM @sql_tmp_insert_day_count;
    EXECUTE stmt_insert1;
    DEALLOCATE PREPARE stmt_insert1;
  PREPARE sql_tmp_delete2 FROM @sql_tmp_delete2;
    EXECUTE sql_tmp_delete2;
    DEALLOCATE PREPARE sql_tmp_delete2;
        
    set result = 1;
END$$
DELIMITER ;

猜你喜欢

转载自blog.csdn.net/u010298371/article/details/88413753