首页 > 其他分享 >如何构建百万级测试数据

如何构建百万级测试数据

时间:2023-02-11 01:44:05浏览次数:33  
标签:FUNCTION RAND VARCHAR FLOOR 测试数据 DELIMITER 构建 rand 百万

-- 创建用户表
DELIMITER ;
CREATE TABLE IF NOT EXISTS users(
`user_id` INT PRIMARY KEY auto_increment,
`username` VARCHAR(20) not null,
`email` VARCHAR(100) not null,
`gender` CHAR(1) not null,
`created_at` TIMESTAMP not null,
`age` TINYINT not null
);

-- 指定长度,创建随机字符串
DELIMITER ;
DROP FUNCTION IF EXISTS rand_string;
DELIMITER $$
CREATE FUNCTION rand_string(n INT)
RETURNS VARCHAR(255)
BEGIN
DECLARE chars_str VARCHAR(100) DEFAULT 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
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() * 80), 1));
SET i = i + 1;
END WHILE;
RETURN return_str;
END $$

-- 创建随机日期
DELIMITER $$
DROP FUNCTION IF EXISTS rand_date;
DELIMITER $$
CREATE FUNCTION rand_date()
RETURNS VARCHAR(255)
BEGIN
DECLARE nDate CHAR(10) DEFAULT '';
SET nDate = CONCAT(2010 + FLOOR((RAND() * 8)), '-', LPAD(FLOOR(1 + (RAND() * 12)), 2, 0), '-',
LPAD(FLOOR(3 + (RAND() * 8)), 2, 0));
RETURN nDate;
END $$

-- 创建随机日期时间
DELIMITER $$
DROP FUNCTION IF EXISTS rand_datetime;
DELIMITER $$
CREATE FUNCTION rand_datetime()
RETURNS VARCHAR(255)
BEGIN
DECLARE nDateTime CHAR(19) DEFAULT '';
SET nDateTime = CONCAT(CONCAT(2010 + FLOOR((RAND() * 8)), '-', LPAD(FLOOR(1 + (RAND() * 12)), 2, 0), '-',
LPAD(FLOOR(3 + (RAND() * 8)), 2, 0)),
' ',
CONCAT(LPAD(FLOOR(0 + (RAND() * 23)), 2, 0), ':', LPAD(FLOOR(0 + (RAND() * 60)), 2, 0), ':',
LPAD(FLOOR(0 + (RAND() * 60)), 2, 0))
);
RETURN nDateTime;
END $$

-- 创建随机性别
DELIMITER $$
DROP FUNCTION IF EXISTS rand_gender;
DELIMITER $$
CREATE FUNCTION rand_gender()
RETURNS VARCHAR(255)
BEGIN
DECLARE chars_str VARCHAR(100) DEFAULT '男女';
RETURN substring(chars_str, FLOOR(1 + RAND() * 2), 1);
END $$

-- 创建插入用户表的存储过程,可执行插入的条数
-- 执行存储过程插入;插入1000条: insert_large_user(1000);
DROP PROCEDURE insert_large_user;
DELIMITER $$
CREATE PROCEDURE insert_large_user(num INT)
BEGIN
DECLARE sNum INT;
SET sNum = 1;
start transaction; #开启事务
WHILE sNum <= num DO
INSERT INTO users(username, email, gender, created_at, age)
VALUES (rand_string(10), concat(rand_string(7), '@qq.com'), rand_gender(),
rand_datetime(), ROUND(RAND() * 100));
SET sNum = sNum + 1;
END WHILE;
commit;
END $$

call insert_large_user(1000000);

标签:FUNCTION,RAND,VARCHAR,FLOOR,测试数据,DELIMITER,构建,rand,百万
From: https://www.cnblogs.com/jiang-123-xing/p/17110777.html

相关文章

  • 在Flask中构建API接口的相关概念
    在Flask中构建API接口的相关概念重定向行为斜杠以下两个路由的不同之处在于是否使用尾部的斜杠。第一个路由的URL尾部有一个斜杠,看起来就像一个文件夹,访问一个没有斜杠......
  • linux篇-Centos7构建NFS服务器和连接
    准备两台centos7虚拟机192.168.30.133192.168.30.1292.192.168.30.1(服务端),3查看rpc服务是否启动4测试安装是否成功5修改配置文件vi/etc/exports/data192.168.1.0/24......
  • Vue3 企业级优雅实战 - 组件库框架 - 11 组件库的打包构建和发布
    回顾第一篇文章中谈到的组件库的几个方面,只剩下最后的、也是最重要的组件库的打包构建、本地发布、远程发布了。1组件库构建组件库的入口是packages/yyg-demo-ui,构建组......
  • Dockerfile构建镜像
    一、构建Apache镜像cd/opt/#建立工作目录mkdir/opt/apachecdapache/vimDockerfile#基于的基础镜像FROMcentos:7#维护镜像的用户信息MAINTAINERthisisa......
  • CH582 CH573 CH579 低功耗测试数据
    CH582广播功耗数据  CH573广播功耗数据 CH573连接状态功耗 ......
  • 构建api gateway之 动态插件
    动态插件之前已经拆解细点逐个介绍了tcp、http代理相关核心点,现在介绍一个让apigateway变得很灵活的功能实现:动态插件。由于lua的动态语言特点,我们可以比较方便......
  • 构建Lua解释器:虚拟机的基础
    前言在本篇,我们正式进入到Lua解释器的开发阶段(这是一个遵循Lua5.3标准的项目)。本篇并不直接接入到设计和实现语法分析器和词法分析器的阶段,而是先设计和实现Lua虚拟机......
  • Dockerfile构建镜像
    一、构建Apache镜像cd/opt/#建立工作目录mkdir/opt/apachecdapache/vimDockerfile#基于的基础镜像FROMcentos:7#维护镜像的用户信息MAINTAINERthisisap......
  • 构建api gateway之 基于etcd实现动态配置同步
    配置中心在之前 tcp的yaml配置 介绍了如何监听yaml文件变化然后更新配置。当然假如我们有很多实例,那么yaml改动将是非常痛苦的事情,那么如何做到配置文件统一管理,实时更......
  • 【Rust入门】(一)构建自己的第一个Rust项目
    安装Rust参考文档,指定安装目录和镜像配置。rustc--version 检查是否安装成功。构建程序使用rustc编译运行rustc编译:rustcmain.js运行:Windows:.\main.exe或mai......