【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 公司开发,由Sun Microsystems公司出品的软件,使用Qt编写,在 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寸高清彩屏实时显示,选用进口品牌的气体传感器,主要检测原理有:电化学、红外、催化燃烧、热导、PID 光离子等。 可以检测管道中或受限空间、大气环境中的…...

C++11 部分新特性
1. 关键字和语法 1.1 nullptr 空指针,能够和整数0进行区别,因为#define NULL 0 1.2 类中非静态成员变量定义时初始化 & 初始化列表 1.3 auto 可推导出右值类型,从而得知左边变量类型。 简单使用示例: auto func() {retur…...
selenium通过performance log获取状态码,Conten-Type,以及重定向路径
selenium的官方不提供获取状态码,Conten-Type,以及重定向路径的方法,并且官方说这些功能将来也不会有。java - How to get HTTP Response Code using Selenium WebDriver - Stack Overflow 非官方的方法大概有下面几种 1.通过requests重新请…...

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

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

vue-7:组件库(移动端vant)(PC端element)
移动端vant 插件安装(按需导入) 重启生效 # 通过 npm 安装 npm i unplugin-vue-components -D# 通过 yarn 安装 yarn add unplugin-vue-components -D 导入基于 vite 的项目: 如果是基于 vite 的项目,在 vite.config.js 文件中…...
JavaScript中splice()、slice()、split()三种方法的区别,及使用详细
简介:splice、slice、split是JavaScript中,比较常用的三个数组方法,表面看起来有点相像,用处却大不相同,今天就来分别介绍下它们的用法。 1、splice()方法 splice方法可以用来删除数组中的元素,或者向数组…...
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,是由微软开发维护的大型图像数据集,包括不同检测任务: Object Detection([主要处理人、车、大象等]) DensePose(姿态密度检测&…...

Java之线程池
目录 一.上节复习 1.阻塞队列 二.线程池 1.什么是线程池 2.为什么要使用线程池 3.JDK中的线程池 三.工厂模式 1.工厂模式的目的 四.使用线程池 1.submit()方法 2.模拟两个阶段任务的执行 五.自定义一个线程池 六.JDK提供线程池的详解 1.如何自定义一个线程池? 2.创…...
让你的网站变得更智能 - B2 Pro主题问答模块新增OpenAI ChatGPT机器人自动回答功能
作为一个网站管理员,你一定会希望能够给你的用户提供更多、更好的服务。那么,你是否曾经想过为你的B2 Pro主题问答模块新增一个智能机器人自动回答功能呢?相信你一定想要这个功能,因为它能够大大提升你网站的用户体验。 现在,我们为你提供了一个好消息。我们已经为B2 Pro…...

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

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

最新入河排污口设置论证、水质影响预测与模拟、污水处理工艺分析及典型建设项目入河排污口方案报告书实例分析
随着水资源开发利用量不断增大,全国废污水排放量与日俱增,部分河段已远远超出水域纳污能力。近年来,部分沿岸入河排污口设置不合理,超标排污、未经同意私设排污口等问题逐步显现,已威胁到供水安全、水环境安全和水生态安全&#x…...

awk指令的详细指南
目录 工作原理 命令格式 awk常见的内建变量(可直接用)如下所示 按行输出文本 按字段输出文本 通过管道、双引号调用 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...

Appium+python自动化(十二)- Android UIAutomator
Android团队在4.1版本(API 16)中推出了一款全新的UI自动化测试工具UiAutomator,用来帮助开发人员更有效率的完成App的Debug工作,同时对于测试人员也是一大福音,为什么这么说呢? UiAutomator提供了以下两种…...

Harmony核心:动态方法修补与.NET游戏Mod开发
一、Harmony的核心定位与设计哲学 Harmony是一个运行时动态方法修补库,专为修改已编译的.NET/Mono应用程序而设计,尤其适用于游戏Mod开发。其核心创新在于: 非破坏性修改:保留原始方法完整性,避免直接替换或覆盖。多…...

【软件工具】批量OCR指定区域图片自动识别内容重命名软件使用教程及注意事项
批量OCR指定区域图片自动识别内容重命名软件使用教程及注意事项 1、操作步骤1-5: 安装与启动:安装成功后,在桌面或开始菜单找到软件图标,双击启动。 导入图片:进入软件主界面,点击 “导入图片” 按钮&a…...
Vue Fragment vs React Fragment
文章目录 前言🧩 一、概念对比:Vue Fragment vs React Fragment📦 二、使用示例对比✅ Vue 3 中使用 Fragment✅ React 中使用 Fragment 🔍 三、差异解析1. **使用方式**2. **传递属性(如 key)**3. **插槽系…...

功能安全实战系列09-英飞凌TC3xx LBIST开发详解
本文框架 0. 前言1.What?1.1 基本原理1.1.1 检测范围1.1.2 LBIST与锁步核对比1.1.3 控制寄存器1.2 关联Alarm2. How?2.1 LBIST触发?2.1.1 SSW配置自动触发2.1.2 软件手动触发LBIST2.2 实现策略2.3 测试篇LBIST对启动时间的影响如何确定当前LBIST是否已使能?如何确定当前LBI…...

第2章:Neo4j安装与配置
在了解了Neo4j的基本概念和优势之后,下一步就是将其安装并配置好,以便开始实际操作。本章将详细介绍Neo4j的各种部署方式,涵盖不同操作系统的安装步骤,深入探讨关键配置项,并介绍常用的管理工具,为读者顺利…...

C# Wkhtmltopdf HTML转PDF碰到的问题
最近碰到一个Html转PDF的需求,看了一下基本上都是需要依赖Wkhtmltopdf,需要在Windows或者linux安装这个可以后使用。找了一下选择了HtmlToPDFCore,这个库是对Wkhtmltopdf.NetCore简单二次封装,这个库的好处就是通过NuGet安装HtmlT…...

art-pi2 上手记录(二)
功能比较庞杂,写得不好,抛砖引玉 预备知识 stm32 默认从主闪存0x08000000启动 art-pi2的psram 映射0x90000000 art-pi2的8线ospi flash 映射0x70000000 stm32h7比较灵活,通过修改选项字节,可以实现从 0x0000 0000 到 0x3FFF 0…...

传统的将自然语言转化为嵌入向量的核心机制是:,将离散的语言符号转化为连续的语义向量,其核心依赖“上下文决定语义”的假设和神经网络的特征提取能力。
传统的将自然语言转化为嵌入向量的核心机制是:,将离散的语言符号转化为连续的语义向量,其核心依赖“上下文决定语义”的假设和神经网络的特征提取能力。 传统的将自然语言转化为嵌入向量(Word Embedding)的核心机制是分布式语义假设(Distributional Semantics Hypothesis…...
IDEA:配置 Git 需要完成 Git 路径设置、账号认证以及仓库关联三个主要步骤
一、验证 Git 是否已安装 检查 Git 版本(Windows/Linux/Mac): 打开终端 / 命令提示符,输入: git --version若未安装,下载并安装 Git 二、在 IDEA 中配置 Git 路径 打开设置: Windows/Linux&a…...