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(); ;    
  • 相关阅读:
    33.数组声明方式(var构造函数) 、检测数组类型、数组的属性(封装好的就一个length)、数组的方法
    31.this指向(写出调用链,找最近对象) this的默认绑定 隐式绑定 显示绑定(call(绑定对象) apply(绑定对象) 当括号内没放绑定对象的时候恢复默认绑定) bind
    31.
    30.函数作用域链 (GO AO 也叫词法作用域链)、 调用栈、调用栈涉及this绑定
    29.包装类(构造函数) 包装类作用及调用栈
    916. Word Subsets
    246. Strobogrammatic Number
    445. Add Two Numbers II
    2. Add Two Numbers
    341. Flatten Nested List Iterator
  • 原文地址:https://www.cnblogs.com/smile-wei/p/6424671.html
Copyright © 2011-2022 走看看