zoukankan      html  css  js  c++  java
  • mysql 按照月份自动创建表,以年和月为表明,动态生成。

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

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

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

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

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

     

    创建存储过程:

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

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

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

    BEGIN
    declare i int;
    set i=0;
    while i<12 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(11) NOT NULL AUTO_INCREMENT,
      `DeviceId` varchar(32) DEFAULT NULL COMMENT '设备ID',
      `Longitude` decimal(18,8) DEFAULT NULL COMMENT '经度',
      `Latitude` decimal(18,8) DEFAULT NULL COMMENT '纬度',
      `Speed` int(11) DEFAULT NULL COMMENT '速度', 
      `LocationTime` datetime DEFAULT NULL COMMENT '定位时间',
      `ReciveTime` datetime DEFAULT NULL COMMENT '接收时间',
      `loginid` int(11) DEFAULT NULL COMMENT '登陆人账号',
      `BdLon` decimal(18,8) DEFAULT NULL COMMENT '百度经度',
      `BdLat` decimal(18,8) DEFAULT NULL COMMENT '百度纬度',
      PRIMARY KEY (`GTID`)
    ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='GPS轨迹'
    PARTITION BY HASH(GTID) 
    PARTITIONS 100
    ");  
      
    PREPARE sql_create_table_gpstrail FROM @sql_create_table_gpstrail;     
    EXECUTE sql_create_table_gpstrail;  
    set i=i+1;
    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 1 QUARTER STARTS DATE_ADD(DATE_ADD(DATE_SUB(CURDATE(),INTERVAL DAY(CURDATE())-1 DAY), INTERVAL 1 MONTH),INTERVAL 1 HOUR)  
     ON COMPLETION PRESERVE ENABLE   DO       
     CALL sql_create_table_gpstrail(); ;    
  • 相关阅读:
    加载第三方Cocoapod库时到项目时
    IOS seachbar 收回键盘
    设置tableView 的Section的title问题
    UISearchView
    UICollectionView 头视图、 尾视图以及Cell自定制
    UICollectionView
    Tomcat上java.lang.IllegalStateException: Optional int parameter 'id' is not present
    格式化p6spy的输出日志
    bootstrap fileinput添加上传成功回调事件
    条件注释判断浏览器<!--[if !IE]>
  • 原文地址:https://www.cnblogs.com/smile-wei/p/6424671.html
Copyright © 2011-2022 走看看