需求:mysql5.5 数据库,想要根据月份自动创建表,每个月创建一张表,需要数据库自动创建,并根据当前年和月动态生成表名称。

解决办法:1 连接数据库工具为Navicat

      2  首先创建存储过程,然后通过创建定时事件执行存储过程。

3  先查看事件是否开启          show variables like '%scheduler%';

     4  如果未开启则需要开启       set global event_scheduler = 1;

 

创建存储过程:

  点击查询--》新建查询--> 输入以下代码,然后在函数中就可以查看到建立的存储过程。

2   我这里利用循环一次建立了12张表,以年和月开头为表明。

3     PARTITION BY HASH(GTID)        PARTITIONS 100   利用哈希表的形式把每个表分为100个区,提高检索效率

BEGIN
declare i int;
set i=;
while i< do
set @sql_create_table_gpstrail = concat(
'CREATE TABLE IF NOT EXISTS xj_dt_gpstrail', date_format(date_add(curdate(), interval i month),'%Y%m'),
"(
`GTID` int() NOT NULL AUTO_INCREMENT,
`DeviceId` varchar() DEFAULT NULL COMMENT '设备ID',
`Longitude` decimal(,) DEFAULT NULL COMMENT '经度',
`Latitude` decimal(,) DEFAULT NULL COMMENT '纬度',
`Speed` int() DEFAULT NULL COMMENT '速度',
`LocationTime` datetime DEFAULT NULL COMMENT '定位时间',
`ReciveTime` datetime DEFAULT NULL COMMENT '接收时间',
`loginid` int() DEFAULT NULL COMMENT '登陆人账号',
`BdLon` decimal(,) DEFAULT NULL COMMENT '百度经度',
`BdLat` decimal(,) DEFAULT NULL COMMENT '百度纬度',
PRIMARY KEY (`GTID`)
) ENGINE=InnoDB AUTO_INCREMENT= DEFAULT CHARSET=utf8 COMMENT='GPS轨迹'
PARTITION BY HASH(GTID)
PARTITIONS
"); PREPARE sql_create_table_gpstrail FROM @sql_create_table_gpstrail;
EXECUTE sql_create_table_gpstrail;
set i=i+;
end while;
END

创建执行存储过程的事件:

1   打开创建的数据库,点击事件按钮,点击新建事件。

  2  在 定义 栏里面输入 CALL sql_create_table_gpstrail(),下面的状态选择ENABLE

3   在计划栏里面配置如图:表示每一年执行一次,开始时间是 2017-02-01 01:00:00

4  保存计划就建立完毕,效果如图:建立了12张gpstrail表 根据年和月份。

创建事件也可不按照上面操作,执行sql语句即可:查询中--》新建查询--》执行

CREATE  EVENT EVENT_pro_sql_create_table_gpstrail
ON SCHEDULE EVERY QUARTER STARTS DATE_ADD(DATE_ADD(DATE_SUB(CURDATE(),INTERVAL DAY(CURDATE())- DAY), INTERVAL MONTH),INTERVAL HOUR)
ON COMPLETION PRESERVE ENABLE DO
CALL sql_create_table_gpstrail(); ;

mysql 按照月份自动创建表,以年和月为表明,动态生成。的更多相关文章

  1. Hibernate连接mysql数据库并自动创建表

    天才第一步,雀氏纸尿裤,Hibernate第一步,连接数据库. Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个 ...

  2. 支持MySql的数据库自动分表工具DBShardTools发布

    支持MySql的数据库自动分表工具DBShardTools发布 前段时间参与了公司的一个项目,这个项目的特点是数据量.访问量都比较大,考虑使用数据库水平分表策略,Google了大半天,竟然没有找到分表 ...

  3. Hibernate 自动创建表bug问题解决

    我在hibernate.cfg.xml配置文件中添加了自动创建表的的属性:(这样当数据库中没有此表是,hibernate就会自动帮我们创建一张表) <property name="hb ...

  4. Hibernate自动创建表

    只要在hibernate.cfg.xml添加这句话,就可以自动生成数据表 <property name="hibernate.hbm2ddl.auto">update& ...

  5. Hibernate根据实体类自动创建表

    Hibernate支持自动建表,在开发阶段很方便,可以保证hbm与数据库表结构的自动同步. 如何使用呢?很简单,只要在hibernate.cfg.xml里加上如下代码 Xml代码<propert ...

  6. hibernate自动创建表报表不存在

    在hibernate.cfg.xml配置了<property name="hibernate.hbm2ddl.auto">update</property> ...

  7. sql自动创建表并复制数据

    ---------------自动创建表并复制数据sql,需要自己设置主键----------- select * into 新表 from 旧表

  8. SQL Server ->> 自动创建表并从文件加载数据

    这个存储过程自动创建表并从文件加载数据. 有一点需要说明的是Excel 12.0驱动是兼容了Excel 97-2003和Excel 2007两者格式的Excel文件. CREATE PROCEDURE ...

  9. Hibrenate实现根据实体类自动创建表或添加字段

    Hibernate支持自动建表,在开发阶段很方便,可以保证hbm与数据库表结构的自动同步. 实现: 在配置hibernate的配置文件中将hbm2ddl.auto设置为update,如:Xml代码&l ...

随机推荐

  1. Springboot定时任务原理及如何动态创建定时任务

    一.前言 上周工作遇到了一个需求,同步多个省份销号数据,解绑微信粉丝.分省定时将销号数据放到SFTP服务器上,我需要开发定时任务去解析文件.因为是多省份,服务器.文件名规则.数据规则都不一定,所以要做 ...

  2. 解决和排查 "必须使用适当的属性和方法修改 User-Agent" 错误时遇到的一些坑

    解决 必须使用适当的属性和方法修改 User-Agent 错误 问题描述:近在项目中有一个需求为需要在 Http 的Header里面添加一个User-Agent参数,当请求时.项目本身的目标框架是 . ...

  3. 图片预览组件PhotoView

    图片预览组件PhotoView PhotoView是一款图片预览组件,广泛应用于大图的查看.该组件支持图片手势缩放.旋转等功能.它可以很好的和ViewPager.Picasso等组件结合,实现各种复杂 ...

  4. UVA 207 PGA Tour Prize Money

    知识补充: ①:ssprintf: int sprintf(char *str, const char *format, ...) 发送格式化输出到 str 所指向的字符串. char str[80] ...

  5. Boruvka算法求最小生成树

    学习了一个新的最小生成树的算法,Boruvka(虽然我不知道怎么读).算法思想也是贪心,类似于Kruskal. 大致是这样的,我们维护图中所有连通块,然后遍历所有的点和边,找到每一个连通块和其他连通块 ...

  6. Codeforces.1110E.Magic Stones(思路 差分)

    题目链接 听dalao说很nb,做做看(然而不小心知道题解了). \(Description\) 给定长为\(n\)的序列\(A_i\)和\(B_i\).你可以进行任意多次操作,每次操作任选一个\(i ...

  7. 2017-9-12-Linux移植&驱动开发

    准备学习Linux很长时间了,很大的一个原因就是兴趣,Linux对科技进步发展.人们生活的改变影响之深很难用简简单单的一些话描述清楚.跟Linux密切相关的东西,开源软件.c语言.底层驱动.网络.服务 ...

  8. Android EditText设置为Number类型后获取数字

    s_video_seg1 = Integer.parseInt(video_seg1.getEditableText().toString().trim()); 此处要使用getEditableTex ...

  9. mysql时间加减运算

    一.MySQL 获得当前日期时间 函数 1.1 获得当前日期 + 时间(date + time) 函数:now() mysql> select now();+———————+| now() |+ ...

  10. Python中将array类型不按科学计数法存在文件中的方法

    直接上代码: from numpy import *import numpy as npDrug_array = zeros((708,708),dtype = int)f = open('D:\ma ...