mysql数据库自动建表
根据项目需要对于车辆轨迹数据想要根据月份自动创建表,每个月创建一张表,需要数据库自动创建,并根据当前年和月动态生成表名称。具体的实现方法如下所示。
创建存储过程
- 点击查询–》新建查询–> 输入以下代码,然后在函数中就可以查看到建立的存储过程。
1 | BEGIN |
为了提高检索效率,这里使用分区的方法:PARTITION BY HASH(day(上报时间)) PARTITIONS 100 利用哈希表的形式把每个表分为31个区。
创建执行存储过程的事件
开启事件
- 先查看事件是否开启
1 | show variables like '%scheduler%'; |
MySQL事件调度器event_scheduler负责调用事件,它默认是关闭的。这个调度器不断地监视一个事件是否要调用, 要创建事件,必须打开调度器。
- 如果未开启则需要开启,可以使用下面任意命令执行:
1 | set GLOBAL event_scheduler = 1; |
使用工具
创建事件,调用刚刚创建的create_gps_car_trails_every_mon存储过程。
1
2
3BEGIN
CALL create_gps_car_trails_every_mon();
END设置时间状态为enable,如下图所示:
- 设定执行时间:表示每一年执行一次,开始时间是 2017-02-01 01:00:00
- 保存计划就建立完毕,效果如图:建立了12张gpstrail表 根据年和月份。
直接执行语句
- 创建事件也可不按照上面操作,执行sql语句即可
1 | CREATE EVENT event_create_gps_car_trails_every_mon1 ON SCHEDULE EVERY 1 QUARTER STARTS DATE_ADD( |