博客
关于我
Mysql插入数据从指定选项中随机选择、插入时间从指定范围随机生成、Navicat使用存储过程模拟插入测试数据
阅读量:800 次
发布时间:2023-02-12

本文共 1749 字,大约阅读时间需要 5 分钟。

Navicat存储过程批量插入数据的实现与优化

场景

在本地开发过程中,使用Navicat通过存储过程批量插入MySQL数据时,可能会遇到以下需求:

  • 随机选择插入项值:当插入数据是固定的INSERT语句时,需要模拟从指定选择项中随机选择插入值。
  • 时间字段随机生成:如果涉及时间字段,需要在指定时间范围内随机生成时间。
  • 实现

    在Navicat中,可以通过以下两种方式实现上述需求:

    方法一:直接使用ELT函数

  • 选择项随机选择:可以使用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);

    方法二:通过Navicat存储过程批量插入

  • 新建存储过程
    • 步骤一:新建函数
      • 进入Navicat,选择函数 > 新建函数 > 过程
      • 输入参数模式为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;END
    • 步骤三:执行存储过程
      • 保存并运行存储过程,输入num值即可控制插入次数。
  • 注意事项

  • 随机值生成:确保随机函数的种子足够随机,避免数据重复。
  • 时间范围控制:调整时间范围,确保生成的时间分布合理。
  • 性能优化:根据实际情况,合理设置批量插入的次数,避免过度占用资源。
  • 转载地址:http://uddfk.baihongyu.com/

    你可能感兴趣的文章
    wargame narnia writeup
    查看>>
    MySQL进阶篇SQL优化(InnoDB锁问题排查与解决)
    查看>>
    Mysql进阶索引篇03——2个新特性,11+7条设计原则教你创建索引
    查看>>
    MySql连接出现1251Client does not support authentication protocol requested by server解决方法
    查看>>
    Mysql连接时报时区错误
    查看>>
    MySql连接时提示:unknown Mysql server host
    查看>>
    MySQL连环炮,你扛得住嘛?
    查看>>
    mysql逗号分隔的字符串如何搜索
    查看>>
    MySQL通用优化手册
    查看>>
    Mysql通过data文件恢复
    查看>>
    MYSQL遇到Deadlock found when trying to get lock,解决方案
    查看>>
    MYSQL遇到Deadlock found when trying to get lock,解决方案
    查看>>
    mysql部署错误
    查看>>
    MySQL配置信息解读(my.cnf)
    查看>>
    Mysql配置文件my.ini详解
    查看>>
    MySQL配置文件深度解析:10个关键参数及优化技巧---强烈要求的福利来咯。
    查看>>
    Mysql配置表名忽略大小写(SpringBoot连接表时提示不存在,实际是存在的)
    查看>>
    mysql配置读写分离并在若依框架使用读写分离
    查看>>
    MySQL里为什么会建议不要使用SELECT *?
    查看>>
    MySQL里的那些日志们
    查看>>