MySQL数据生成工具mysql_random_data_load

在看MySQL文章的时候偶然发现生成数据的工具,此处直接将软件作者的文档贴了过来,说明了使用方式及下载地址

Random data generator for MySQL

Many times in my job I need to generate random data for a specific table in order to reproduce an issue.
After writing many random generators for every table, I decided to write a random data generator, able to get the table structure and generate random data for it.
Plase take into consideration that this is the first version and it doesn’t support all field types yet!

NOTICE
This is an early stage project.

Supported fields:

Field typeGenerated values
tinyint0 ~ 0xFF
smallint0 ~ 0XFFFF
mediumint0 ~ 0xFFFFFF
int - integer0 ~ 0xFFFFFFFF
bigint0 ~ 0xFFFFFFFFFFFFFFFF
float0 ~ 1e8
decimal(m,n)0 ~ 10^(m-n)
double0 ~ 1000
char(n)up to n random chars
varchar(n)up to n random chars
dateNOW() - 1 year ~ NOW()
datetimeNOW() - 1 year ~ NOW()
timestampNOW() - 1 year ~ NOW()
time00:00:00 ~ 23:59:59
yearCurrent year - 1 ~ current year
tinyblobup to 100 chars random paragraph
tinytextup to 100 chars random paragraph
blobup to 100 chars random paragraph
textup to 100 chars random paragraph
mediumblobup to 100 chars random paragraph
mediumtextup to 100 chars random paragraph
longblobup to 100 chars random paragraph
longtextup to 100 chars random paragraph
varbinaryup to 100 chars random paragraph
enumA random item from the valid items list
setA random item from the valid items list

How strings are generated

  • If field size < 10 the program generates a random “first name”
  • If the field size > 10 and < 30 the program generates a random “full name”
  • If the field size > 30 the program generates a “lorem ipsum” paragraph having up to 100 chars.

The program can detect if a field accepts NULLs and if it does, it will generate NULLs ramdomly (~ 10 % of the values).

Usage

mysql_random_data_load <database> <table> <number of rows> [options...]

Options

OptionDescription
–bulk-sizeNumber of rows per INSERT statement (Default: 1000)
–debugShow some debug information
–fk-samples-factorPercentage used to get random samples for foreign keys fields. Default 0.3
–hostHost name/ip
–max-fk-samplesMaximum number of samples for fields having foreign keys constarints. Default: 100
–max-retriesMaximum number of rows to retry in case of errors. See duplicated keys. Deafult: 100
–no-progressbarSkip showing the progress bar. Default: false
–passwordPassword
–portPort number
–PrintPrint queries to the standard output instead of inserting them into the db
–userUsername
–versionShow version and exit

Foreign keys support

If a field has Foreign Keys constraints, random-data-load will get up to --max-fk-samples random samples from the referenced tables in order to insert valid values for the field.
The number of samples to get follows this rules:
1. Get the aproximate number of rows in the referenced table using the rows field in:

EXPLAIN SELECT COUNT(*) FROM <referenced schema>.<referenced table>

1.1 If the number of rows is less than max-fk-samples, all rows are retrieved from the referenced table using this query:

SELECT <referenced field> FROM <referenced schema>.<referenced table>

1.2 If the number of rows is greater than max-fk-samples, samples are retrieved from the referenced table using this query:

SELECT <referenced field> FROM <referenced schema>.<referenced table> WHERE RAND() <= <fk-samples-factor> LIMIT <max-fk-samples>

Example

CREATE DATABASE IF NOT EXISTS test;CREATE TABLE `test`.`t3` (`id` int(11) NOT NULL AUTO_INCREMENT,`tcol01` tinyint(4) DEFAULT NULL,`tcol02` smallint(6) DEFAULT NULL,`tcol03` mediumint(9) DEFAULT NULL,`tcol04` int(11) DEFAULT NULL,`tcol05` bigint(20) DEFAULT NULL,`tcol06` float DEFAULT NULL,`tcol07` double DEFAULT NULL,`tcol08` decimal(10,2) DEFAULT NULL,`tcol09` date DEFAULT NULL,`tcol10` datetime DEFAULT NULL,`tcol11` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,`tcol12` time DEFAULT NULL,`tcol13` year(4) DEFAULT NULL,`tcol14` varchar(100) DEFAULT NULL,`tcol15` char(2) DEFAULT NULL,`tcol16` blob,`tcol17` text,`tcol18` mediumtext,`tcol19` mediumblob,`tcol20` longblob,`tcol21` longtext,`tcol22` mediumtext,`tcol23` varchar(3) DEFAULT NULL,`tcol24` varbinary(10) DEFAULT NULL,`tcol25` enum('a','b','c') DEFAULT NULL,`tcol26` set('red','green','blue') DEFAULT NULL,`tcol27` float(5,3) DEFAULT NULL,`tcol28` double(4,2) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB;

To generate 100K random rows, just run:

mysql_random_data_load test t3 100000 --user=root --password=root
mysql> select * from t3 limit 1\G
*************************** 1. row ***************************id: 1
tcol01: 10
tcol02: 173
tcol03: 1700
tcol04: 13498
tcol05: 33239373
tcol06: 44846.4
tcol07: 5300.23
tcol08: 11360967.75
tcol09: 2017-09-04
tcol10: 2016-11-02 23:11:25
tcol11: 2017-03-03 08:11:40
tcol12: 03:19:39
tcol13: 2017
tcol14: repellat maxime nostrum provident maiores ut quo voluptas.
tcol15: Th
tcol16: Walter
tcol17: quo repellat accusamus quidem odi
tcol18: esse laboriosam nobis libero aut dolores e
tcol19: Carlos Willia
tcol20: et nostrum iusto ipsa sunt recusa
tcol21: a accusantium laboriosam voluptas facilis.
tcol22: laudantium quo unde molestiae consequatur magnam.
tcol23: Pet
tcol24: Richard
tcol25: c
tcol26: green
tcol27: 47.430
tcol28: 6.12
1 row in set (0.00 sec)

效果良好
在这里插入图片描述

How to download the precompiled binaries

There are binaries available for each version for Linux and Darwin. You can find compiled binaries for each version in the releases tab:

https://github.com/Percona-Lab/mysql_random_data_load/releases

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/132016.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Zookeeper-JavaApI操作

JavaApI操作 JavaApI操作1) Curator 介绍2) Curator API 常用操作a) 建立连接与CRUD基本操作b) Watch事件监听c) 分布式锁c.1) 介绍c.2) Zookeeper分布式锁原理c.3) 案例&#xff1a;模拟12306售票 JavaApI操作 1) Curator 介绍 Curator 是 Apache ZooKeeper 的Java客户端库。…

通过商品ID获取淘宝天猫商品评论数据,淘宝商品评论接口,淘宝商品评论api接口

淘宝商品评论内容数据接口可以通过以下步骤获取&#xff1a; 登录淘宝开放平台&#xff0c;进入API管理控制台。在API管理控制台中创建一个应用&#xff0c;获取到应用的App Key和Secret Key。构造请求URL&#xff0c;请求URL由App Key和Secret Key拼接而成&#xff0c;请求UR…

GPU 基础知识整理

萌新&#xff1a; 在接触一款硬件时我会&#xff1a;基础硬件结构&#xff0c;线程结构&#xff0c;内存布局&#xff0c;数据吞吐量&#xff0c;等方面进行学习 首先GPU的特点: 并行性能&#xff1a;GPU 是专门设计用于并行计算的硬件&#xff0c;通常具有大量的处理单元&am…

【已编译资料】基于正点原子alpha开发板的第三篇系统移植

系统移植的三大步骤如下&#xff1a; 系统uboot移植系统linux移植系统rootfs制作 一言难尽&#xff0c;踩了不少坑&#xff0c;当时只是想学习驱动开发&#xff0c;发现必须要将第三篇系统移植弄好才可以学习后面驱动&#xff0c;现将移植好的文件分享出来&#xff1a; 仓库&…

关于vue3启动的一些错误总结

一、成功解决 npm ERR! ERESOLVE could not resolve 解决办法&#xff1a; npm i --legacy-peer-deps –legacy-peer-deps 作用&#xff1a; 在NPM v7中&#xff0c;现在默认安装peerDependencies。 在很多情况下&#xff0c;这会导致版本冲突&#xff0c;从而中断安装过程。 …

如何通过Express和React处理SSE

本文作者为360奇舞团前端开发工程师 最近AIGC技术的大热&#xff0c;市面上也出现了许多类似生产的AI工具&#xff0c;其中有一大特色就是对话的输出结果是类似真人的打字效果出现&#xff0c;要呈现出这种效果&#xff0c;最主要的就是要利用SSE技术&#xff08;Server-Sent E…

本地vscode安装GPU版本PyTorch

操作系统 windows, IDE环境vscode&#xff0c;本地GPU 可以新建一个jupyter文件&#xff0c;运行一些测试代码 确保装好显卡驱动 在底下调出终端窗口&#xff0c;默认是power shell&#xff0c;我喜欢用cmd窗口 激活自己的虚拟环境&#xff0c;输入命令 nvidia-smi 确保自己…

Generative AI 新世界 | 文生图领域动手实践:预训练模型的微调

在上期文章&#xff0c;我们探讨了预训练模型的部署和推理&#xff0c;包括运行环境准备、角色权限配置、支持的主要推理参数、图像的压缩输出、提示工程 (Prompt Engineering)、反向提示 (Negative Prompting) 等内容。 亚马逊云科技开发者社区为开发者们提供全球的开发技术资…

Lumen/Laravel - 数据库读写分离原理 - 探究

1.应用场景 主要用于学习与探究Lumen/Laravel的数据库读写分离原理。 2.学习/操作 1.文档阅读 chatgpt & 其他资料 数据库入门 | 数据库操作 | Laravel 8 中文文档 入门篇&#xff08;一&#xff09;&#xff1a;数据库连接配置和读写分离 | 数据库与 Eloquent 模型 | La…

分布式数据库HBase(林子雨慕课课程)

文章目录 4. 分布式数据库HBase4.1 HBase简介4.2 HBase数据模型4.3 HBase的实现原理4.4 HBase运行机制4.5 HBase的应用方案4.6 HBase安装和编程实战 4. 分布式数据库HBase 4.1 HBase简介 HBase是BigTable的开源实现 对于网页搜索主要分为两个阶段 1.建立整个网页索引&#xf…

【JVM】初步认识Java虚拟机

&#x1f40c;个人主页&#xff1a; &#x1f40c; 叶落闲庭 &#x1f4a8;我的专栏&#xff1a;&#x1f4a8; c语言 数据结构 javaEE 操作系统 Redis 石可破也&#xff0c;而不可夺坚&#xff1b;丹可磨也&#xff0c;而不可夺赤。 JVM 一、初识JVM1.1 什么是JVM1.2 JVM的功能…

苹果安卓网页的H5封装成App的应用和原生开发的应用有什么不一样?

老哥在么&#xff1f;H5封装的app和原生开发的app有什么不一样&#xff1f;&#xff0c;不懂就要问&#xff0c;我能理解哈&#xff0c;虽然这个问题有点小白&#xff0c;但是我还是得认真回答&#xff0c;以防止我回答的不是很好&#xff0c;所以我科技了一下&#xff0c;所以…