MySQL 中批量创建表
当需要在 MySQL 数据库中创建表名类似于
log_20180101
、log_20180102
这样基于日期的数据表时,可以使用下面的存储过程一次创建一个月的数据表:
1 | delimiter // |
也可以创建一个存储过程,然后通过事件调度每天 00:00:00 执行:
1
2
3
4
5
6
7
8
9
10
11
12CREATE PROCEDURE `create_log_table`()
BEGIN
set @sqlstr=CONCAT('CREATE TABLE IF NOT EXISTS `log_',DATE_FORMAT(NOW(),'%Y%m%d'),'` (
`id` int(10) AUTO_INCREMENT NOT NULL,`Gboard_UUID` varchar(32) NOT NULL,`Channel` varchar(4) NOT NULL,
`event_name` varchar(32) NOT NULL,
`Log_Time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
)ENGINE=MyISAM DEFAULT CHARSET=utf8;');
PREPARE create_stmt from @sqlstr;
EXECUTE create_stmt;
END1
CREATE EVENT `create_log_daily` ON SCHEDULE EVERY 1 DAY STARTS '2018-01-01 00:00:00' ON COMPLETION PRESERVE ENABLE DO CALL create_log_table()
参考文档: 批量建立MySQL表 Mysql存储过程_一次性建立多张表