按月分表存储过程

Posted lianzhilei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了按月分表存储过程相关的知识,希望对你有一定的参考价值。

存储过程

CREATE DEFINER=`root`@`%` PROCEDURE `segment_tx_callin_track`()
BEGIN
DECLARE _exists FLOAT(14,6) DEFAULT 0;

set @mouth= DATE_FORMAT(DATE_SUB(NOW(),INTERVAL 1 MONTH),‘%Y%m‘);

# 新表名
set @new_table_name = concat(‘tx_callin_track_‘, @mouth);


# 表是否存在
set @new_table_exists = concat("SELECT count(1) into @tnum FROM information_schema.TABLES WHERE table_name = ‘",@new_table_name,"‘");
PREPARE mte from @new_table_exists;
EXECUTE mte;

set _exists = @tnum;


if _exists = 0  then 

	# 创建新表
    CREATE TABLE `tx_callin_track_new` (
				  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
				  `compid` char(6) NOT NULL,
				  `callid` char(32) NOT NULL,
				  `busid` char(10) DEFAULT ‘‘ COMMENT ‘技能组ID / IVR ID / 黑名单ID、区域路由ID、时间路由ID‘,
				  `bustype` tinyint(4) NOT NULL COMMENT ‘对应busid\n1、IVR记录\n2、技能组记录\n3、其他(黑名单ID、区域路由ID、时间路由ID)‘,
				  `name` varchar(10) DEFAULT ‘‘,
				  `app` varchar(16) NOT NULL COMMENT ‘1、IVR(bustype =1)\nivr\naddme\nplaycontinue\n\n2、技能组(bustype =2)\ngroup \nagent \novertime\noverqueue\nnotworktime\nallnotlogin\n\n3、其他(bustype =3)\ntime\narea\nblacklist\nagent\nextension\noutline\nplayback\ndtmf\nhangup‘,
				  `apptype` tinyint(4) NOT NULL COMMENT ‘1、IVR\n1 转入IVR\n2 次数累加\n3 播放继续\n\n2、技能组\n1 转接技能组\n2 开始排队\n3 准备呼叫坐席\n4 呼叫坐席结果(成功/失败)\n5 排队超时\n6 排队溢出\n7 非工作时间\n8 所有坐席未登录\n\n3、\n1 时间路由\n2 区域路由\n3 黑名单\n4 转呼坐席\n5 转呼坐席结果\n6 转呼分机\n7 转呼分机结果\n8 转呼外线\n9 转呼外线结果\n10 播放音乐\n11 获取dtmf\n12 挂机\n‘,
				  `c1` varchar(40) DEFAULT ‘‘,
				  `c2` varchar(10) DEFAULT ‘‘,
				  `date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
				  PRIMARY KEY (`id`),
				  KEY `cdate` (`date`),
				  KEY `callid` (`callid`(6))
	) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

	# 旧表重命名
	set @table_rename = concat("ALTER TABLE `cdr`.`tx_callin_track` RENAME TO  ", @new_table_name);
	PREPARE stmt from @table_rename;
	EXECUTE stmt ;
	
    # 新表重命名
	ALTER TABLE `cdr`.`tx_callin_track_new` RENAME TO  `cdr`.`tx_callin_track` ;
    
end if;


END

  

 

以上是关于按月分表存储过程的主要内容,如果未能解决你的问题,请参考以下文章

用于获取表名、视图和存储过程的 SQL 语句,按模式排序

phpMyAdmin,存储过程不按预期工作

MySQL 5.7,使用存储过程中的变量按列名对表进行排序

存储过程 查询出多条数据批量插入表 增加出库通知单统计按机构分组事件

python按月分表

视图、存储过程或表定义函数