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(); ;    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM