1、网页版:Generatedata1.1 预览1.2 功能介绍1.2.1 自定义数据集名称1.2.2 选择城市1.2.3 数据集1.2.4 导出类型1.2.5 导出记录数量1.2.6 导入 MySQL2、客户端:spawner2.1 预览2.2 功能介绍2.2.1 数据集2.2.2 输出格式2.2.3 导入数据库3.代码生成:pydbgen3.1 安装3.2 使用方法

学习数据库时,难免需要一些数据进行实验,对于小数据量的数据来说,我们自己想一些数据并插入到数据库即可,但是如果需要大量的数据时,手动输入将是一项繁琐的工作,我们也不一定能编那么多数据。基于以上,自动生成数据库数据成为了一项很重要的需求。

通过在网上搜集资料,我选择了几款可以自动生成大量随机数据库数据的工具。

Generatedata是一个免费、开放源码的脚本,主要由javascript , PHP和MySQL构成,它可以让您可以迅速生成大量各种格式的客户数据,用于测试软件,把数据输入数据库等。

generatedata 是一款在线工具,它是这样的:

界面看着很清爽,各功能区域一目了然。如果觉得英语不好看明白,可以右上角切换成中文:

通过查看“新闻”栏,该项目代码在今年11月18日还进行了更新。

最上方一栏可以填入数据集名称,但该功能是注册用户才可以使用的功能。如何成为注册用户呢?如下图所示,捐赠20美元可以获得一个账号,可以在线保存数据,而且可以突破每次生成100条记录的限制。

当然,对于不经常使用的人来说,这不是必要的。

因为生成的随机数据包含了姓名、国家、邮编等等,所以要选择一个国家,生成的数据会根据选择的国家进行调整:

数据类型有:人类相关数据(包含姓名、国家、手机号、邮箱等)、地理相关数据(包括街道地址、城市、邮编等)、信用卡数据、数值数据、数学数据以及其他。

挑几个常用的说明一下:

数据库中自增的 ID 可以在该网址生成,不仅可以定义起始值、步长还能定义正负数,甚至还可以将数字与字符串组合成一个字段:

人名也是经常用到的,可以对生成的姓名进行多种约束:男、女、姓、名等:

如果想生成班级同学的成绩数据,需要用到 数值范围 即生成指定数值之间的数据:

还有很多数据类型,有需要的自行查看。如果字段不够了,可以在表格下方增加需要的行数。还有很好的一点是:可以用鼠标拖动各行进行排序。

可供选择的导出格式有:CSV、Excel、HTML、JSON、LDIF、SQL、XML。 SQL 是我们关注的重点。

可以定义表名称。

选择数据库格式:MySQL、SQLite、Postgres、Oracle、SQL Server。

可以生成创建表的语句、删除表的语句。

选择批量插入的条数,即每一条 INSERT 语句插入数据的条数。

选择完了导出类型,还可以选择是在页面中显示还是以文件的形式下载。

我们选择自动生成数据的意图之一是想要大量的数据,该网址虽然也提供了选择生成记录数量的功能(页面左下角),但是那是为注册用户提供的,而且最多是5000条,而作为普通用户,每次只能生成100条记录,这并不能满足我们的需求。

===== 华丽的分割线 ====

接下来要交给大家如何解除生成记录数据的限制(以 Chrome 为例)。

首先按 "F12" 调出开发者工具,然后按图示步骤找出左下角编辑框在 HTML 中的位置:

找到了100然后双击进入编辑状态,将该值改为 10000 ,然后可以看到页面左下角由 100 变为 10000 了:

那么它会起作用吗?我们拭目以待,点击右下角 “生成” 按钮,由于我选择的是以文件方式生成,会生成一个名为“dataNov-21-2018.sql”的文件。我们打开它看一下:

可以看到,一共生成了10000条记录,正是我们所需要的。记录数量竟然超过了官方规定的注册用户的最高限制。此处应该有掌声。

==== 华丽的结尾 ====

光生成数据库还不算完,最终导入到 MySQL 中才能为我们所用。前面已经介绍过 MySQL 的官方工具“MySQL Workbench”,打开它并连接数据库。

点击"File"->"Open SQL Script",选择刚才下载的 dataNov-21-2018.sql 文件:

由于该 SQL 脚本并没有指定使用哪个数据库,所以,在打开的 SQL 窗口前面要加上一句" USE `mysql_learn`; "(mysql_learn可以为其他你现存的任一数据库名称)。

添加完该语句后,点击类似于闪电的图标执行所有SQL语句。等所有语句执行完进行验证,在Query 窗口输入指令:"select * from mysql_learn.uscity; " 然后执行,看是否为 10000条记录。

从图中可以看到所有10000条数据都已插入到 MySQL 中,大功告成。

Spawner 是一个样品/测试数据的数据库生成器。它可以配置为输出指定的文本或SQL插入声明。它也可以直接插入到一个MySQL 5.x的数据库。包括许多字段类型,其中大部分是可配置的。

其界面如下,主要由三个 TAB 页组成:字段定义、输出定义和日志信息。

该客户端和 Generatedata 的大部分功能重叠,只有少数差异化功能。

支持的数据类型也不少:数值类型、人类相关数据、时间、文本、集合、网络,也涵盖了日常需要的数据类型。

各种数据类型不再赘述,请自行查阅。为了插入同一个数据库,分别创建如下四个字段:

注意:该客户端不限制生成记录的条数。

输出格式有四种:Delimited、Fixed Width、SQL、MySQL Database。

Delimited 就是将各字段以指定分隔符进行分隔,如果指定分隔符为逗号,并勾选“Include field names as first row of delimited output”,我们将得到一个 CSV 格式的数据:

生成的数据:

SQL 格式可以指定表名称、每条 INSERT 语句插入的记录条数、操作类型等。

MySQL Database 输出就比较有意思了,它是直接连接 MySQL 数据库将生成的数据直接插入。但是该功能一致报错,如图所示:

我尝试将 MySQL 安装目录下的 “libmysql.dll” 放到该 exe 的目录或者 "C:/Windows/SysWOW64" 目录都无效,所以我选择放弃,如果你有办法解决,欢迎留言。

使用 1.2.6 中的方法将生成的 "datagen.sql" 文件导入并执行,最后查看表中的记录:

正好 20000 条数据,说明数据插入成功。

pydbgen 是一个轻量的纯 Python 库,它可以生成包括姓名、地址、信用卡号、日期、时间、公司名称等数据,存放在 Pandas Dataframe 对象中,并可以保存到 SQLite 数据库或 Excel 文件。

假定电脑上已经安装了 Python,只需要执行如下命令进行安装:

pip install pydbgen在 Python 3.6版本安装成功。

当前 1.0.0 版本主要有以下几个主要方法:

gen_data_series()

gen_dataframe()

gen_table()

gen_excel()

gen_table() 接口会使用 Python 内置的 SQLite 引擎生成一个 ".db" 后缀的数据库,用户可以选择多种数据类型当做数据表的列名,SQLite 表中的所有的数据类型都是 VARCHAR 类型。如下类型可用:

Name, country, city, real (US) cities, US state, zipcode, latitude, longitude

Month, weekday, year, time, date

Personal email, official email, SSN

Company, Job title, phone number, license plate

使用示例:

from pydbgen import pydbgenmyDB = pydbgen.pydb()myDB.gen_table(200, db_file="TestDB.db",table_name="People", fields=["name",'phone','city'])执行完成后,会生成一个 TestDB.db 文件,使用 Navicat for SQLite 打开该数据库文件:

点击 "File"->"Export" 可以将db文件导出为 SQL 脚本,然后使用前面提到的方法将 SQL 文件导入到 MySQL 数据库中。

由于 pydbgen 支持的数据类型不是很多,根据需求选择是否需要使用它,期待它的发展。

本文介绍了三种生成 随机数据库数据的工具,希望能帮助大家更加顺利的学习 MySQL。如果您有其他好的数据生成工具,也欢迎留言和大家分享!

系列文章回顾