我是靠谱客的博主 刻苦寒风,最近开发中收集的这篇文章主要介绍mysql存储过程循环建表_mysql存储过程批量创建表,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

要求:每个月创建一张表,格式为xxxx_yyyymm.

以下例子从202101创建到203012 .

DELIMITER $$

CREATE DEFINER = `root`@`localhost` PROCEDURE `createTablePro`()

BEGIN

#批量创建表

DECLARE v_i INT(11);

DECLARE v_year INT(11);

DECLARE v_createTime varchar(32);

SET v_i = 1;

SET v_year = 2021;

#set v_createTime ='202001';

while v_year<2030 do

while v_i <=12 do

if v_i<10 THEN

set v_createTime=CONCAT(v_year,'0',v_i);

ELSE

set v_createTime=CONCAT(v_year,v_i);

END if;

#set v_createTime=CONCAT(v_year,v_i);

set @createSql = CONCAT('CREATE TABLE IF NOT EXISTS smp_equip_realtimedata_',v_createTime,

'( `id` varchar(64) NOT NULL COMMENT '主键',

`create_by` varchar(64) DEFAULT NULL COMMENT '创建者',

`create_date` datetime DEFAULT NULL COMMENT '创建时间',

`update_by` varchar(64) DEFAULT NULL COMMENT '更新者',

`update_date` datetime DEFAULT NULL COMMENT '更新时间',

`remarks` varchar(255) DEFAULT NULL COMMENT '备注信息',

`del_flag` varchar(64) DEFAULT NULL COMMENT '逻辑删除标记(0:显示;1:隐藏)',

`equip_id` varchar(64) DEFAULT NULL COMMENT '设备ID',

`equip_code` varchar(64) DEFAULT NULL COMMENT '设备编号',

`equip_name` varchar(64) DEFAULT NULL COMMENT '设备名称',

`equip_type` varchar(64) DEFAULT NULL COMMENT '设备类型',

`func_code` varchar(8) DEFAULT NULL COMMENT '功能码',

`data_lenth` int(11) DEFAULT NULL COMMENT '数据长度',

`uv_a` decimal(6,2) DEFAULT NULL COMMENT 'A相电压',

`uv_b` decimal(6,2) DEFAULT NULL COMMENT 'B相电压',

`uv_c` decimal(6,2) DEFAULT NULL COMMENT 'C相电压',

`ia_a` decimal(8,4) DEFAULT NULL COMMENT 'A相电流',

`ia_b` decimal(8,4) DEFAULT NULL COMMENT 'B相电流',

`ia_c` decimal(8,4) DEFAULT NULL COMMENT 'C相电流',

`leakage_current` decimal(8,1) DEFAULT NULL COMMENT '漏电流',

`temperature_i` decimal(8,1) DEFAULT NULL COMMENT '温度1',

`temperature_ii` decimal(8,1) DEFAULT NULL COMMENT '温度2',

`temperature_iii` decimal(8,1) DEFAULT NULL COMMENT '温度3',

`temperature_iv` decimal(8,1) DEFAULT NULL COMMENT '温度4',

`ta_trans_ratio` decimal(8,1) DEFAULT NULL COMMENT '电路变比',

`alarm_leakage_current` char(1) DEFAULT NULL COMMENT '漏电报警',

`alarm_overload` char(1) DEFAULT NULL COMMENT '过载报警',

`alarm_short_circuit` char(1) DEFAULT NULL COMMENT '短路报警',

`alarm_overvoltage` char(1) DEFAULT NULL COMMENT '过压报警',

`alarm_under_voltage` char(1) DEFAULT NULL COMMENT '欠压报警',

`alarm_broken_circuit` char(1) DEFAULT NULL COMMENT '断路报警',

`alarm_open_phase` char(1) DEFAULT NULL COMMENT '缺相报警',

`alarm_phase_stagger` char(1) DEFAULT NULL COMMENT '错相报警',

`alarm_electric_arc` char(1) DEFAULT NULL COMMENT '电弧报警',

`alarm_smoke_detector` char(1) DEFAULT NULL COMMENT '烟感报警',

`alarm_flammable_gas` char(1) DEFAULT NULL COMMENT '可燃气体报警',

`alarm_toxic_gas` char(1) DEFAULT NULL COMMENT '有毒气体报警',

`alarm_temp_i` char(1) DEFAULT NULL COMMENT '温度1报警',

`alarm_temp_ii` char(1) DEFAULT NULL COMMENT '温度2报警',

`alarm_temp_iii` char(1) DEFAULT NULL COMMENT '温度3报警',

`alarm_temp_iv` char(1) DEFAULT NULL COMMENT '温度4报警',

`di1` char(1) DEFAULT NULL ,

`di2` char(1) DEFAULT NULL ,

`di3` char(1) DEFAULT NULL ,

`di4` char(1) DEFAULT NULL ,

`di5` char(1) DEFAULT NULL ,

`di6` char(1) DEFAULT NULL ,

`di7` char(1) DEFAULT NULL ,

`di8` char(1) DEFAULT NULL ,

`do1` char(1) DEFAULT NULL ,

`do2` char(1) DEFAULT NULL ,

`do3` char(1) DEFAULT NULL ,

`do4` char(1) DEFAULT NULL ,

`do5` char(1) DEFAULT NULL ,

`do6` char(1) DEFAULT NULL ,

`do7` char(1) DEFAULT NULL ,

`do8` char(1) DEFAULT NULL ,

`data_time` datetime DEFAULT NULL COMMENT '数据时间',

`fault_leakage_current` char(1) DEFAULT NULL COMMENT '漏电故障',

`fault_temp_i` char(1) DEFAULT NULL COMMENT '温度1故障',

`fault_temp_ii` char(1) DEFAULT NULL COMMENT '温度2故障',

`fault_temp_iii` char(1) DEFAULT NULL COMMENT '温度3故障',

`fault_temp_iv` char(1) DEFAULT NULL COMMENT '温度4故障',

`pt` decimal(8,1) DEFAULT NULL COMMENT 'PT变比',

`active_energy` decimal(20,2) DEFAULT '0.00' COMMENT '有功电能',

`reactive_energy` decimal(20,2) DEFAULT '0.00' COMMENT '无功电能',

PRIMARY KEY (`id`),

KEY `serd_create_date_in` (`create_date`) USING BTREE,

KEY `serd_equip_id_in` (`equip_id`) USING BTREE,

KEY `serd_equip_code_in` (`equip_code`) USING BTREE,

KEY `serd_equip_name_in` (`equip_name`) USING BTREE,

KEY `serd_data_time_in` (`data_time`) USING BTREE,

KEY `index_codeAndDate` (`create_date`,`equip_code`),

KEY `index_codeAndTime` (`equip_code`,`data_time`),

KEY `update_date_da` (`update_date`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='设备实时数据';'

);

prepare stmt from @createSql;

execute stmt;

SET v_i= v_i+1;

#select DATE_FORMAT((select DATE_ADD((select STR_TO_DATE(CONCAT(v_createTime,'01'), '%Y%m%d')),INTERVAL 1 MONTH)),'%Y%m') into v_createTime;

END WHILE;

SET v_i = 1;

SET v_year= v_year+1;

END WHILE;

END$$

DELIMITER ;

最后

以上就是刻苦寒风为你收集整理的mysql存储过程循环建表_mysql存储过程批量创建表的全部内容,希望文章能够帮你解决mysql存储过程循环建表_mysql存储过程批量创建表所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部