我是靠谱客的博主 甜蜜水壶,最近开发中收集的这篇文章主要介绍SQL语句循环创建表,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

delimiter //
CREATE PROCEDURE createTablesInBulk1 () BEGIN
DECLARE
i INT;
DECLARE
table_name VARCHAR ( 200 );
DECLARE
table_pre VARCHAR ( 200 );
DECLARE
sql_text VARCHAR ( 10000 );
SET i = 1;
SET table_name = '';
SET table_pre = 'device_file_info_0_';
SET sql_text = '';
WHILE
i < 501 DO
IF
i < 10 THEN
SET table_name = CONCAT( table_pre, i );
ELSE
SET table_name = CONCAT( table_pre, i );
END IF;
SET sql_text = CONCAT( 'CREATE TABLE ', table_name, "(
`file_id` bigint(32) NOT NULL COMMENT '文件ID',
`file_name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '文件名称',
`file_type` int(1) NOT NULL COMMENT '文件类型 1:录像数据 2:GPS信息 3:报警日志信息 4:ACC信息 5:设备状态信息 6:CAN数据信息 7:拨号日志信息 8:GDS信息 9:图片',
`proc_type` tinyint(4) NOT NULL DEFAULT 0 COMMENT '文件被操作类型 0 无处理 1 转码 2 截图 3 加马赛克',
`file_size` bigint(20) NOT NULL COMMENT '文件大小',
`file_path` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '文件路径',
`file_ext` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '文件扩展类型',
`ex_info` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '文件扩展信息',
`finished` tinyint(1) NULL DEFAULT 0 COMMENT '文件是否传输完成 0:未完成 1:已完成',
`dev_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '设备ID',
`chl` bigint(20) NULL DEFAULT NULL COMMENT '通道',
`alarm_flag` int(1) NULL DEFAULT NULL COMMENT '报警文件标识',
`stream_type` int(1) NULL DEFAULT NULL COMMENT '码流类型 1:主码流 2:辅子码流',
`start_time` datetime NULL DEFAULT NULL COMMENT '视频开始时间',
`end_time` datetime NULL DEFAULT NULL COMMENT '视频结束时间',
`source_type` int(1) NULL DEFAULT NULL COMMENT '文件来源类型',
`take_at` datetime NULL DEFAULT NULL COMMENT '图片抓拍时间',
`create_at` datetime NULL DEFAULT NULL COMMENT '记录创建时间',
`update_at` datetime NULL DEFAULT NULL COMMENT '记录上次更新时间',
`valid` tinyint(1) NULL DEFAULT 1 COMMENT '记录是否逻辑存在',
`instance_id` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '文件存储instanceId',
`tenant_id` int(11) NULL DEFAULT NULL COMMENT '租户id',
`app_id` int(11) NULL DEFAULT NULL COMMENT 'appid,数据属主,用于数据隔离',
PRIMARY KEY (`file_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;" );
SET @sql_text = sql_text;
PREPARE stmt
FROM
@sql_text;
EXECUTE stmt;
SET i = i + 1;
END WHILE;
END;
#调用
CALL createTablesInBulk1 ();
DROP PROCEDURE createTablesInBulk1;

循环插入数据

delimiter //
CREATE PROCEDURE test_insert5 ()
BEGIN
DECLARE i INT DEFAULT 1;
WHILE i<500001
DO
insert into device_related_info(device_id) values (i);
SET i=i+1;
END WHILE ;
commit;
END;
CALL test_insert5 ();
DROP PROCEDURE test_insert5 ();
INSERT INTO device_related_info(device_id) VALUES (1)

最后

以上就是甜蜜水壶为你收集整理的SQL语句循环创建表的全部内容,希望文章能够帮你解决SQL语句循环创建表所遇到的程序开发问题。

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

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

评论列表共有 0 条评论

立即
投稿
返回
顶部