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

mysq之快速批量的插入生成数据

mysq之快速批量的插入生成数据

    • 1.insert inot select
    • 2.存储过程
    • 3.借助工具

在日常测试工作时,有时候需要某张表有大量的数据,如:需要有几百个系统中的用户账号等情况;因此,记录整理,如何快速的在表中插入生成大量数据;

1.insert inot select

将查询出来的表字段值插入到另一张表中,可以进行条件筛选只插入满足条件的数据,勉强能达到批量生成数据的效果,但不灵活,且需要有源数据,不是很理想的方法;

语法

insert into table_name select * from table_name
where 条件

insert into table_name(列名1,...,列名n) select (列名1,...,列名n) from table_name
where 条件

示例:test_menu整表内容插入到test_menubak

insert into test_menubak
select * from test_menu;

示例:test_menu表id<=时的内容,指定字段,插入到test_menubak

insert into test_menubak2(menu_id,menu_name,parent_id,path)
select menu_id,menu_name,parent_id,path from test_menu
where menu_id <=10;

2.存储过程

定义存储过程,传递参数循环控制插入表数据中的内容,灵活,可以根据需要灵活配置插入的内容,但是需要编写sql脚本稍微麻烦一点点;
语法:这里只介绍了基本的语法

create procedure  pro_name(类型 参数名 参数类型(长度),...,类型 参数名n 参数类型(长度))
begin
-- 存储过程体
end;

类型:可分为 in、out、inout
in:输入参数,向存储过程中传递值;
out:输出参数,从存储过程中获取值;
inout:输入输出参数,即可以传递、也可以获取;
如:in test int (10)

declare定义变量
格式declare 变量名 类型;

set赋值
格式set 变量名 = 值;

concat变量字符串拼接
格式concat('字符串',变量名);

while循环语法

while 条件 do-- 循环体
end while;

if判断

if 条件 -- 语句块
end if;

调用存储过程
格式call 存储过程名(参数1,...,参数n);

示例:输入开始和结束参数,批量插入数据:

delimiter //
-- 检测对应的存储过程是否存在,存在则删除;
drop procedure if exists moreInsert;-- 定义带两参数startNum、maxtNum的存储过程;
create procedure  moreInsert(in startNum int(10),in maxtNum int(10))
begin
-- 定义计数器变量currNum;declare currNum int;set currNum = startNum;-- 开始事务start transaction;-- 计数器小于最大值maxtNum时,进入循环;while currNum <=maxtNum do-- 插入数据语句;insert ignore into 会跳过重复的主键;insert ignore into test_user(user_id,dept_id,user_name,nick_name)-- 数据使用变量、将字符串和变量拼接;values(currNum,15,concat('test_',currNum),concat('测试账号_',currNum));-- 每次插入完成计数器加1;set currNum = currNum + 1;end while;-- 提交commit;
end //

调用存储过程:

call moreInsert(5,16);

3.借助工具

可以借助工具,如:nacicat,可以利用它里面的数据生产,对指定表中生成指定数量的数据,可对表的每个字段值进行设置,生成随机的值、枚举值等
优点:简单快速,上手容易;
如图:

入口:

在这里插入图片描述

配置字段值:

在这里插入图片描述

http://www.lryc.cn/news/496388.html

相关文章:

  • 浅谈C#库之DevExpress
  • 聊聊Flink:这次把Flink的触发器(Trigger)、移除器(Evictor)讲透
  • 一款支持80+语言,包括:拉丁文、中文、阿拉伯文、梵文等开源OCR库
  • Flink四大基石之CheckPoint(检查点) 的使用详解
  • JVM 常见面试题及解析(2024)
  • Python 调用 Umi-OCR API 批量识别图片/PDF文档数据
  • K8S资源之secret资源
  • QT:信号和槽01
  • 针对Qwen-Agent框架的Function Call及ReAct的源码阅读与解析:Agent基类篇
  • XML 查看器:深入理解与高效使用
  • 《Vue零基础入门教程》第十五课:样式绑定
  • 以AI算力助推转型升级,暴雨亮相CCF中国存储大会
  • 【VMware】Ubuntu 虚拟机硬盘扩容教程(Ubuntu 22.04)
  • 3D Bounce Ball Game 有什么技巧吗?
  • 【SQL】实战--组合两个表
  • Spring基于注解实现 AOP 切面功能
  • 设计模式 更新ing
  • Elasticsearch 进阶
  • 【AI】Sklearn
  • 通过 JNI 实现 Java 与 Rust 的 Channel 消息传递
  • 【老白学 Java】对象的起源 Object
  • Ubuntu Linux操作系统
  • SpringBoot 打造的新冠密接者跟踪系统:企业复工复产防疫保障利器
  • 嵌入式Linux(SOC带GPU树莓派)无窗口系统下搭建 OpenGL ES + Qt 开发环境,并绘制旋转金字塔
  • webGL入门教程_06变换矩阵与绕轴旋转总结
  • 生成树详解(STP、RSTP、MSTP)
  • 【QNX+Android虚拟化方案】128 - QNX 侧触摸屏驱动解析
  • C#中的集合初始化器
  • cartographer建图与定位应用
  • 专业解析 .bashrc 中 ROS 工作空间的加载顺序及其影响 ubuntu 机器人