前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL 从零开始:08 番外:随机生成数据库数据

MySQL 从零开始:08 番外:随机生成数据库数据

作者头像
王强
发布2018-12-17 14:31:49
6K0
发布2018-12-17 14:31:49
举报

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 使用方法

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

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

1、网页版:Generatedata

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

  • 工具网址:http://www.generatedata.com
  • github地址:https://github.com/benkeen/generatedata
  • 官方文档: http://benkeen.github.io/generatedata/

1.1 预览

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

generatedata

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

generatedata中文界面

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

1.2 功能介绍

1.2.1 自定义数据集名称

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

捐助

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

1.2.2 选择城市

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

城市

1.2.3 数据集

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

挑几个常用的说明一下:

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

自增列

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

姓名

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

数值范围

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

1.2.4 导出类型

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

  • 可以定义表名称。
  • 选择数据库格式:MySQL、SQLite、Postgres、Oracle、SQL Server。
  • 可以生成创建表的语句、删除表的语句。
  • 选择批量插入的条数,即每一条 INSERT 语句插入数据的条数。
  • 选择是否添加 Primary Key 列。

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

1.2.5 导出记录数量

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

如果我们点击左下角编辑框,会弹出警告:

警告

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

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

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

突破限制

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

改成10000

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

10000条记录

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

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

1.2.6 导入 MySQL

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

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

打开SQL文件

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

执行

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

验证插入结果

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

2、客户端:spawner

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

  • 下载地址:https://sourceforge.net/projects/spawner/

2.1 预览

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

spawner

2.2 功能介绍

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

2.2.1 数据集

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

spawner数据格式

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

2.2.2 输出格式

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

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

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

delimited

生成的数据:

csv数据

  • SQL 格式可以指定表名称、每条 INSERT 语句插入的记录条数、操作类型等。
  • MySQL Database 输出就比较有意思了,它是直接连接 MySQL 数据库将生成的数据直接插入。但是该功能一致报错,如图所示:

spawner插入mysql报错

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

2.2.3 导入数据库

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

20000条数据

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

3.代码生成:pydbgen

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

  • github 地址:https://github.com/tirthajyoti/pydbgen

3.1 安装

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

pip install pydbgen

在 Python 3.6版本安装成功。

3.2 使用方法

当前 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 pydbgen

myDB = pydbgen.pydb()
myDB.gen_table(200, db_file="TestDB.db",table_name="People", fields=["name",'phone','city'])

执行完成后,会生成一个 TestDB.db 文件,使用 Navicat for SQLite 打开该数据库文件:

打开db文件

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

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

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-11-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 C与Python实战 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、网页版:Generatedata
    • 1.1 预览
      • 1.2 功能介绍
        • 1.2.1 自定义数据集名称
        • 1.2.2 选择城市
        • 1.2.3 数据集
        • 1.2.4 导出类型
        • 1.2.5 导出记录数量
        • 1.2.6 导入 MySQL
    • 2、客户端:spawner
      • 2.1 预览
        • 2.2 功能介绍
          • 2.2.1 数据集
          • 2.2.2 输出格式
          • 2.2.3 导入数据库
      • 3.代码生成:pydbgen
        • 3.1 安装
          • 3.2 使用方法
          相关产品与服务
          数据库
          云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档