本文共 1749 字,大约阅读时间需要 5 分钟。
在本地开发过程中,使用Navicat通过存储过程批量插入MySQL数据时,可能会遇到以下需求:
INSERT语句时,需要模拟从指定选择项中随机选择插入值。在Navicat中,可以通过以下两种方式实现上述需求:
ELT(CEILING(rand( )) * 8函数,从'测试1', '测试2', '测试3', '测试4', '测试5', '测试6', '测试7', '测试8'中随机选择一个值。FROM_UNIXTIME(UNIX_TIMESTAMP('2023-01-01 14:53:27') + FLOOR(0 + (RAND() * 60 * 60 * 24 * 30 * 6)))生成随机时间。示例插入语句:
INSERT `test` (`car_num`, `no_login_type`, `record_time`, `last_login_number`, `last_login_time`, `remark`) VALUES( ELT(CEILING(rand()) * 8, '测试1', '测试2', '测试3', '测试4', '测试5', '测试6', '测试7', '测试8'), ELT(CEILING(rand()) * 2, '1', '2'), FROM_UNIXTIME(UNIX_TIMESTAMP('2023-01-01 14:53:27') + FLOOR(0 + (RAND() * 60 * 60 * 24 * 30 * 6))), 'test', '2023-01-09 16:06:01', NULL); 函数 > 新建函数 > 过程。IN,名字自定义,类型为INT,用作执行次数的输入参数。CREATE DEFINER=`root`@`localhost` PROCEDURE `pro_insertMany`(IN `num` INT) BEGIN DECLARE `i` INT DEFAULT 1; WHILE `i` <= `num` DO INSERT INTO `bus_driver_no_login_record` (`car_num`, `no_login_type`, `record_time`, `last_login_number`, `last_login_time`, `remark`) VALUES( ELT(CEILING(rand()) * 8, '测试1', '测试2', '测试3', '测试4', '测试5', '测试6', '测试7', '测试8'), ELT(CEILING(rand()) * 2, '1', '2'), FROM_UNIXTIME(UNIX_TIMESTAMP('2023-01-01 14:53:27') + FLOOR(0 + (RAND() * 60 * 60 * 24 * 30 * 6))), 'test', '2023-01-09 16:06:01', NULL ); SET `i` = `i` + 1; END WHILE;ENDnum值即可控制插入次数。转载地址:http://uddfk.baihongyu.com/