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)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用中的代码片段展示了如何创建一个日期列,并将其存储在一个变量中。首先,需要声明几个日期变量,包括 @date(指定的日期)、@start_date(指定月份的第一天)、@end_date(指定月份的最后一天)和@loop_date(循环迭代的日期)。然后,通过使用内置的DATEFROMPARTS函数和EOMONTH函数,可以计算出 @start_date 和@end_date 的值。接下来,使用一个循环来迭代从@start_date到@end_date之间的所有日期,并将它们插入到 @dates 变量中。最后,可以从 @dates 变量中选择报告日期。 引用中的代码片段展示了如何创建一个包含每天通话数量的报告。代码的结构与引用中的代码类似,只是在最后的SELECT语句中使用了一个LEFT JOIN来将日期与通话记录进行匹配,并计算每天通话的数量。这里的call是一个示例,其中包含了通话记录的信息。 因此,根据引用和引用中的代码,可以使用以下SQL语句创建包含日期和时间的: ```sql CREATE TABLE 名 ( date DATE, time TIME ); ```<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [学习SQL:使用日期和时间函数创建SQL Server报](https://blog.csdn.net/culuo4781/article/details/107626452)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *3* [SQL如何制作一张日历维度](https://blog.csdn.net/liyue071714118/article/details/100995561)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值