要求:每个月创建一张表,格式为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 ;