当前位置: 首页 > news >正文

【MySQL】MySQL批量插入测试数据的几种方式

文章目录

  • 前言
  • 一、表
  • 二、使用函数生成
    • 设置允许创建函数
      • 产生随机字符串
      • 产生随机数字
  • 三、创建存储过程
    • 插入角色表
    • 插入用户表
  • 四、执行存储过程
  • 小结
  • 五、使用 Navicat自带的数据生成

前言

在开发过程中我们不管是用来测试性能还是在生产环境中页面展示好看一点, 又或者学习验证某一知识点经常需要一些测试数据, 这个时候如果手敲的话, 十行二十行还好, 多了就很死亡了, 接下来介绍两种常用的MySQL测试数据批量生成方式

  • 存储方式+函数
  • Navicat的数据生成

一、表

准备了两张表

  • 角色表:

    • id: 自增长
    • role_name: 随机字符串, 不允许重复
    • orders: 1-1000任意数字
  • 用户表:

    • id: 自增长
    • username: 随机字符串, 不允许重复
    • password: 随机字符串, 允许重复
    • role_id: 1-10w之间的任意数字
  • 建表语句:

CREATE TABLE `user` (`id` int(11) NOT NULL AUTO_INCREMENT,`username` varchar(255) DEFAULT NULL COMMENT '用户名',`role_id` int(11) DEFAULT NULL COMMENT '角色id',`password` varchar(255) DEFAULT NULL COMMENT '密码',`salt` varchar(255) DEFAULT NULL COMMENT '盐',PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;CREATE TABLE `role` (`id` int(11) NOT NULL AUTO_INCREMENT,`role_name` varchar(255) DEFAULT NULL COMMENT '角色名',`orders` int(11) DEFAULT NULL COMMENT '排序权重\r\n',PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

二、使用函数生成

通过存储过程快速插入, 通过函数保证数据不重复

设置允许创建函数

查看 MySQL是否允许创建函数

SHOW VARIABLES LIKE 'log_bin_trust_function_creators';

在这里插入图片描述

结果如图所示, 我们使用以下命令将创建函数功能打开(global-所有session都生效)

SET GLOBAL log_bin_trust_function_creators=1; 

在这里插入图片描述

这个时候再一次查询就会显示已打开
在这里插入图片描述

产生随机字符串

-- 随机产生字符串
DELIMITER $$
CREATE FUNCTION rand_string(n INT) RETURNS VARCHAR(255)
BEGIN    DECLARE chars_str VARCHAR(100) DEFAULT 'abcdefghijklmnopqrstuvwxyzABCDEFJHIJKLMNOPQRSTUVWXYZ';DECLARE return_str VARCHAR(255) DEFAULT '';DECLARE i INT DEFAULT 0;WHILE i < n DO  SET return_str =CONCAT(return_str,SUBSTRING(chars_str,FLOOR(1+RAND()*52),1));  SET i = i + 1;END WHILE;RETURN return_str;
END $$-- 假如要删除
-- drop function rand_string;

产生随机数字

-- 用于随机产生区间数字
DELIMITER $$
CREATE FUNCTION rand_num (from_num INT ,to_num INT) RETURNS INT(11)
BEGIN   DECLARE i INT DEFAULT 0;  SET i = FLOOR(from_num +RAND()*(to_num -from_num+1));
RETURN i;  
END$$-- 假如要删除
-- drop function rand_num;

三、创建存储过程

插入角色表

-- 插入角色数据
DELIMITER $$
CREATE PROCEDURE insert_role(max_num INT)
BEGIN  DECLARE i INT DEFAULT 0;   SET autocommit = 0;    REPEAT  SET i = i + 1;  INSERT INTO role ( role_name,orders ) VALUES (rand_string(8),rand_num(1,5000)); UNTIL i = max_num  END REPEAT;  COMMIT;  
END$$-- 删除
-- DELIMITER ;
-- drop PROCEDURE insert_role;

插入用户表

-- 插入用户数据
DELIMITER $$
CREATE PROCEDURE  insert_user(START INT, max_num INT)
BEGIN  DECLARE i INT DEFAULT 0;   SET autocommit = 0;    REPEAT  SET i = i + 1;  INSERT INTO user (username, role_id, password, salt ) VALUES (rand_string(8) ,rand_num(1,100000), rand_string(10), rand_string(10));  UNTIL i = max_num  END REPEAT;  COMMIT;  
END$$-- 删除
-- DELIMITER ;
-- drop PROCEDURE insert_user;

四、执行存储过程

-- 执行存储过程,往dept表添加10万条数据
CALL insert_role(100000); -- 执行存储过程,往emp表添加100万条数据,编号从100000开始
CALL insert_user(100000,1100000); 

小结

执行用时 10w数据差不多半分钟, 100w数据超过了20分钟, 同时 user的存储还卡死很久…
最后都成功新增, 但是自动递增值和行数不一致, 这个我也不知道因为啥…
在这里插入图片描述

数据展示

  • role表

在这里插入图片描述

  • user表

在这里插入图片描述

五、使用 Navicat自带的数据生成

接下来我们使用 Navicat的数据生成

在这里插入图片描述
在这里插入图片描述

直接下一步, 然后选择对应的两张表生成行数和对应的生成规则, 基于之前的执行速度, 这次 role生成 1w数据, user生成 10w数据
对于字符串类型的字段, 我们可以设置他的随机数据生成器, 根据需要进行选择
在这里插入图片描述

例如角色名称, 选择了 职位名称 还可以进行是否包含 null 的选择等
在这里插入图片描述

但是如果是 姓名 那么就会让你选择是否唯一
在这里插入图片描述

数字的话会让你选择范围, 默认值等
在这里插入图片描述

等确定好了, 我们就可以点击右下角进行生成随机测试数据
在这里插入图片描述

通过结果可以看到生成十一万测试数据一共用时十一秒, 比第一种方法速度快很多, 推荐使用

相关文章:

【MySQL】MySQL批量插入测试数据的几种方式

文章目录 前言一、表二、使用函数生成设置允许创建函数产生随机字符串产生随机数字 三、创建存储过程插入角色表插入用户表 四、执行存储过程小结五、使用 Navicat自带的数据生成 前言 在开发过程中我们不管是用来测试性能还是在生产环境中页面展示好看一点, 又或者学习验证某…...

PowerShell install 一键部署virtualbox

VirtualBox 前言 VirtualBox 是一款开源虚拟机软件。VirtualBox 是由德国 Innotek 公司开发&#xff0c;由Sun Microsystems公司出品的软件&#xff0c;使用Qt编写&#xff0c;在 Sun 被 Oracle 收购后正式更名成 Oracle VM VirtualBox。Innotek 以 GNU General Public Licens…...

CTF权威指南 笔记 -第四章Linux安全机制-4.1-Stack Canaries

目录 Stack Canaries 简介 我们进行简单的例子 64 32 checksec Stack Canaries 是对抗栈溢出攻击的技术 SSP安全机制 Canary 的值 栈上的一个随机数 在程序启动时 随机生成并且保存在比返回地址更低值 栈溢出是从低地址向高地址进行溢出 如果攻击者要攻击 就一定要覆…...

KDZD400Q便携式三氯乙烯浓度检测仪

一、产品概述 检测仪用于快速检测多种气体浓度、温湿度测量并超标报警的场合。采用2.31寸高清彩屏实时显示&#xff0c;选用进口品牌的气体传感器&#xff0c;主要检测原理有&#xff1a;电化学、红外、催化燃烧、热导、PID 光离子等。 可以检测管道中或受限空间、大气环境中的…...

C++11 部分新特性

1. 关键字和语法 1.1 nullptr 空指针&#xff0c;能够和整数0进行区别&#xff0c;因为#define NULL 0 1.2 类中非静态成员变量定义时初始化 & 初始化列表 1.3 auto 可推导出右值类型&#xff0c;从而得知左边变量类型。 简单使用示例&#xff1a; auto func() {retur…...

selenium通过performance log获取状态码,Conten-Type,以及重定向路径

selenium的官方不提供获取状态码&#xff0c;Conten-Type&#xff0c;以及重定向路径的方法&#xff0c;并且官方说这些功能将来也不会有。java - How to get HTTP Response Code using Selenium WebDriver - Stack Overflow 非官方的方法大概有下面几种 1.通过requests重新请…...

GL绘制自定义线条3_自定义线帽

安卓Path搭配Paint可以设置线帽&#xff0c;我想能不能把我自己的线条绘制Demo也加上类似的功能。 线头规则描述&#xff1a; 1、设一个线宽一半的线段&#xff0c;坐标为(0, 0)到(-lineWidth / 2, 0)。 2、设步骤1的线段有一垂直于它的向量(0&#xff0c;1)&#xff0c;然后传…...

【AGC】新版鸿蒙崩溃SDK集成使用方法

【背景】 我们知道AGC的Crash SDK都是需要强制集成华为分析SDK的&#xff0c;在使用时的崩溃数据上报都要依靠分析服务来完成&#xff0c;这就容易受到限制&#xff0c;有时出现无数据的情况就要依次排查崩溃SDK与分析SDK&#xff0c;比较麻烦。而就在不久前&#xff0c;鸿蒙崩…...

vue-7:组件库(移动端vant)(PC端element)

移动端vant 插件安装&#xff08;按需导入&#xff09; 重启生效 # 通过 npm 安装 npm i unplugin-vue-components -D# 通过 yarn 安装 yarn add unplugin-vue-components -D 导入基于 vite 的项目&#xff1a; 如果是基于 vite 的项目&#xff0c;在 vite.config.js 文件中…...

JavaScript中splice()、slice()、split()三种方法的区别,及使用详细

简介&#xff1a;splice、slice、split是JavaScript中&#xff0c;比较常用的三个数组方法&#xff0c;表面看起来有点相像&#xff0c;用处却大不相同&#xff0c;今天就来分别介绍下它们的用法。 1、splice()方法 splice方法可以用来删除数组中的元素&#xff0c;或者向数组…...

Linux更新操作系统Openssh版本9.3p1(源码编译安装)

Linux更新操作系统Openssh版本9.3p1(源码编译安装) 部署前准备 安装依赖 yum install -y gcc gcc-c glibc make autoconf openssl openssl-devel pcre-devel pam-develyum install -y pam* zlib* openssh-9.3p1.tar.gzopenssl-3.1.0.tar.gz备份文件 cp /etc/pam.d/sshd /etc/…...

MS COCO数据集介绍

MS COCO数据集介绍 MS COCO全称是Microsoft Common Objects in Context&#xff0c;是由微软开发维护的大型图像数据集&#xff0c;包括不同检测任务&#xff1a; Object Detection&#xff08;[主要处理人、车、大象等]&#xff09; DensePose&#xff08;姿态密度检测&…...

Java之线程池

目录 一.上节复习 1.阻塞队列 二.线程池 1.什么是线程池 2.为什么要使用线程池 3.JDK中的线程池 三.工厂模式 1.工厂模式的目的 四.使用线程池 1.submit()方法 2.模拟两个阶段任务的执行 五.自定义一个线程池 六.JDK提供线程池的详解 1.如何自定义一个线程池? 2.创…...

让你的网站变得更智能 - B2 Pro主题问答模块新增OpenAI ChatGPT机器人自动回答功能

作为一个网站管理员,你一定会希望能够给你的用户提供更多、更好的服务。那么,你是否曾经想过为你的B2 Pro主题问答模块新增一个智能机器人自动回答功能呢?相信你一定想要这个功能,因为它能够大大提升你网站的用户体验。 现在,我们为你提供了一个好消息。我们已经为B2 Pro…...

仓库信息管理系统设计与实现

一、数据库设计 1.数据库模型设计概览 2.数据库表设计 ①depository 描述&#xff1a; 该表存储仓库的信息&#xff0c;比如仓库名称&#xff0c;仓库地址和仓库介绍 表结构&#xff1a; 序号 字段名 数据类型 主键 非空 默认值 描述 1 id INT(10) 是 是 2…...

初识Java多线程编程

文章目录 一、线程的状态二、线程的常见属性三、多线程编程Thread类常用构造方法1.继承Thread类2.实现Runnable接口3.匿名内部类实现4.lambda 表达式创建 Runnable 子类对象 四、线程的常见方法 一、线程的状态 //线程的状态是一个枚举类型 Thread.State public class ThreadS…...

最新入河排污口设置论证、水质影响预测与模拟、污水处理工艺分析及典型建设项目入河排污口方案报告书实例分析

随着水资源开发利用量不断增大&#xff0c;全国废污水排放量与日俱增&#xff0c;部分河段已远远超出水域纳污能力。近年来,部分沿岸入河排污口设置不合理&#xff0c;超标排污、未经同意私设排污口等问题逐步显现&#xff0c;已威胁到供水安全、水环境安全和水生态安全&#x…...

awk指令的详细指南

目录 工作原理 命令格式 awk常见的内建变量&#xff08;可直接用&#xff09;如下所示 按行输出文本 按字段输出文本 通过管道、双引号调用 Shell 命令 示例 CPU使用率 数组 ​编辑统计文件的内容出现的次数 使用awk 统计secure 访问日志中每个客户端IP的出现次数? …...

解密Netty中的Reactor模式

文章目录 单线程Reactor模式多线程Reactor模式Reactor模式中IO事件的处理流程Netty中的通道ChannelNetty中的反应器ReactorNetty中的处理器HandlerNetty中的通道Channel和处理器Handler的协作组件Pipeline Reactor(反应器)模式是高性能网络编程在设计和架构方面的基础模式.Doug…...

这是一个黑科技:C++爬虫~(文末报名C/C++领域新星计划)

目录 写在前面 完整代码 这里必看!! 写在最后 写在前面 现在所有人都知道万能的Python可以做机器学习,可以做人工智能,可以爬取各种小网站,但是你不知道,基于C++的正则表达式早就能够爬取各种网络数据啦!!你没猜错,阿玥将在这篇文章中简介怎么用C...

ESP32 BLE开发避坑指南:GAP/GATT回调函数里那些容易踩的‘坑’和实战调试技巧

ESP32 BLE开发实战&#xff1a;GAP/GATT回调函数深度解析与调试技巧 1. 理解ESP32 BLE回调机制的核心逻辑 在ESP32的BLE开发中&#xff0c;GAP和GATT回调函数是整个蓝牙通信的中枢神经系统。很多开发者虽然能够按照示例代码完成基本功能&#xff0c;但当遇到复杂场景时却常常陷…...

MinGW-w64 vs MSVC:Windows平台C++开发环境选型实战对比(含GCC性能测试)

MinGW-w64 vs MSVC&#xff1a;Windows平台C开发环境深度评测与选型指南 在Windows平台上进行C开发时&#xff0c;工具链的选择往往让开发者陷入纠结。MinGW-w64和MSVC作为两大主流方案&#xff0c;各有其独特的优势和应用场景。本文将深入剖析两者的技术差异&#xff0c;通过实…...

告别手动查询!用FE Info插件5分钟搞定ANSYS Workbench节点距离与坐标提取

告别手动查询&#xff01;用FE Info插件5分钟搞定ANSYS Workbench节点距离与坐标提取 在复杂的有限元分析中&#xff0c;工程师常常需要精确获取模型特定位置的节点坐标、单元信息或关键点间距。传统的手动查询方式不仅效率低下&#xff0c;还容易出错。FE Info插件正是为解决这…...

鸿蒙_一行代码实现页面间的跳转

通过之前的学习&#xff0c;我们在pages目录下增加了MyPage.ets页面&#xff0c;我们来看一下如何在默认页面&#xff08;Index.ets&#xff09;跳转到另一个页面。首先分析下&#xff0c;如下图所示&#xff0c;在页面中有一个onClick方法&#xff0c;功能为点击后改变message…...

2026奇点智能技术大会独家授权:多模态安防监控合规红线手册(含GDPR/等保2.0/《公共安全视频图像信息系统管理条例》三重映射表)

第一章&#xff1a;2026奇点智能技术大会&#xff1a;多模态安防监控 2026奇点智能技术大会(https://ml-summit.org) 多模态融合架构设计 本届大会展示的安防监控系统突破传统单模态局限&#xff0c;整合可见光、热成像、毫米波雷达与声纹传感四维数据流。核心采用时间对齐特…...

tao-8k部署教程(Linux/macOS双平台):Xinference源码安装与模型注册

tao-8k部署教程&#xff08;Linux/macOS双平台&#xff09;&#xff1a;Xinference源码安装与模型注册 1. 引言&#xff1a;为什么选择tao-8k&#xff1f; 如果你正在寻找一个能处理超长文本的嵌入模型&#xff0c;tao-8k绝对值得你花时间了解一下。这个由Hugging Face开发者…...

【Matlab】移动机器人多传感器融合定位实现

【Matlab】移动机器人多传感器融合定位实现 一、引言 移动机器人的自主导航能力是其实现智能化作业的核心,而定位精度则直接决定导航系统的可靠性与实用性,广泛应用于仓储物流、服务机器人、工业巡检、自动驾驶等多个领域。移动机器人定位技术的核心的是实时获取机器人在全…...

洛阳科技职业学院:地铁+景区+美食一步到位

Hey&#xff0c;各位同学&#xff01;还在为选择学校举棋不定吗&#xff1f;是不是既想找个靠谱的实力派又盼着课余生活精彩纷呈&#xff1f;那就把目光锁定洛阳科技职业学院吧&#xff01;这里不仅能让你学业更上一层楼还能让你玩得嗨、吃得好、逛得爽&#xff01;学校拥有Buf…...

GitLab合并分支实战:从命令行到图形界面的完整避坑指南

GitLab合并分支实战&#xff1a;从命令行到图形界面的完整避坑指南 当你第一次在团队协作中遇到GitLab分支合并时&#xff0c;那种既兴奋又忐忑的心情我至今记忆犹新。兴奋的是自己的代码即将成为项目的一部分&#xff0c;忐忑的是担心合并过程中出现各种意外。作为现代软件开发…...

如何高效使用开源分子编辑器Ketcher:从科研绘图到药物设计的完整指南

如何高效使用开源分子编辑器Ketcher&#xff1a;从科研绘图到药物设计的完整指南 【免费下载链接】ketcher Web-based molecule sketcher 项目地址: https://gitcode.com/gh_mirrors/ke/ketcher 在化学研究和药物开发领域&#xff0c;分子结构绘制是一项基础但至关重要的…...