MySQL如何快速创建800w条测试数据表

创建大量测试数据对于开发和测试人员来说是非常有用的。本篇将介绍如何使用MySQL快速创建800万条测试数据表。下面是完整攻略:

1. 准备工作

首先,需要准备好MySQL环境,并保证你有足够的权限在MySQL中创建表和载入数据。另外,需要安装一个开源的工具——Faker库。

Faker库是一个用来生成随机数据的工具,可以用于生成姓名、地址、电子邮件等随机字符串,并且支持多种语言,包括英语,中文等。

安装Faker库的方法:

pip install Faker

2. 创建测试数据表

接下来,我们将使用Python脚本来生成800万条数据并将数据载入MySQL中。

以下是示例代码:

from faker import Faker
import mysql.connector

# 连接数据库
mydb = mysql.connector.connect(
    host="localhost",
    user="yourusername",
    password="yourpassword",
    database="yourdatabase"
)

# 创建数据表
mycursor = mydb.cursor()
mycursor.execute("CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), email VARCHAR(255))")

# 插入数据
faker = Faker()
for i in range(8000000):
  name = faker.name()
  email = faker.email()
  sql = "INSERT INTO users (name, email) VALUES (%s, %s)"
  val = (name, email)
  mycursor.execute(sql, val)

  if i % 1000 == 0:
    mydb.commit()
    print("Inserting rows ", i, "-", i + 999, " to the database.")

# 提交更改
mydb.commit()
print(mycursor.rowcount, "records inserted.")

如上代码所示,我们首先使用mysql.connector模块连接MySQL数据库。然后创建一个表示users表的mycursor游标对象,并使用execute()方法向MySQL数据库中创建了一个测试数据表。接着,我们使用Faker库来生成随机数据,并使用INSERT语句将这些数据插入到MySQL表中。

在这个示例中,我们每次插入1000条数据,实现批量插入的效率,减少了频繁的SQL提交操作,从而提高了数据表的创建速度。

3. 示例说明

下面给出两个示例说明:

示例一

首先,我们运行上述Python脚本来创建数据表。在终端中运行以下代码:

python create_table.py

接着我们在MySQL中检查users表是否创建成功,运行以下SQL语句:

DESCRIBE users;

我们可以看到如下结果:

+-------+--------------+------+-----+---------+----------------+
| Field | Type         | Null | Key | Default | Extra          |
+-------+--------------+------+-----+---------+----------------+
| id    | int(11)      | NO   | PRI | NULL    | auto_increment |
| name  | varchar(255) | YES |     | NULL    |                |
| email | varchar(255) | YES |     | NULL    |                |
+-------+--------------+------+-----+---------+----------------+

上述输出说明我们已经成功创建了具有3列的名为users的表。其中id列是主键,类似的,nameemail是varchar类型的数据,无索引和默认值。

接着,我们可以使用以下命令行向MySQL数据库中插入2条记录:

INSERT INTO users(name, email) VALUES ('Hanna Hem', 'hannahem@gmail.com'), ('Macie Cobb', 'maciecobb@hotmail.com');

之后我们可以使用以下命令行来查询这两个记录:

SELECT * FROM users;

我们可以看到输出结果如下:

+----+---------------+----------------------+
| id | name          | email                 |
+----+---------------+----------------------+
|  1 | Hanna Hem     | hannahem@gmail.com    |
|  2 | Macie Cobb    | maciecobb@hotmail.com |
+----+---------------+----------------------+

示例二

在本示例中,我们使用命令行来生成800万条数据并将其载入到MySQL的users表中。打开终端并输入以下命令:

$ faker --help

输出告诉我们如何使用faker命令创建各种类型的随机数据。接着,我们使用以下命令生成800万条随机数据:

$ faker iterate 8000000 | faker "name,email" | tr ',' '\t' > data.tsv

我们得到的结果是一个以TAB分隔符分隔的文件,这个文件可以轻松地转换为SQL格式的INSERT语句。下面代码将从data.tsv文件中读取数据,并将其插入到MySQL中。运行以下Python脚本:

import csv
import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="myusername",
  password="mypassword",
  database="mydatabase"
)

mycursor = mydb.cursor()

with open('data.tsv', newline='') as csvfile:
  reader = csv.reader(csvfile, delimiter='\t')
  sql = "INSERT INTO users (name, email) VALUES (%s, %s)"
  for row in reader:
    val = (row[0], row[1])
    mycursor.execute(sql, val)

mydb.commit()
print("Imported", mycursor.rowcount, "records.")

类似于示例一,该示例会创建一个users表,只是这次使用了数据生成命令行和TSV读取脚本,以避免直接使用Faker库生成大量的无用数据。

4. 总结

在本文中,我们介绍了如何使用python和Faker库,生成800万条随机数据以及如何将它们载入到MySQL中。这可以帮助开发人员在没有真实数据的情况下测试他们的应用程序。另外,注意到对于大数据量,批量提交插入语句是一个很好的优化方式,可以加快数据在数据库中的存储操作。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MySQL如何快速创建800w条测试数据表 - Python技术站

(0)
上一篇 2023年5月18日
下一篇 2023年5月18日

相关文章

  • MySQL Database on Azure新功能

    本月中国版的MySQL Database on Azure发布了两项新功能: 1、主从复制——只读实例 在这之前Azure上的MySQL数据库也是支持主从复制的,但是只能作为on-premises部署的MySQL的slave实例——Azure上的MySQL数据库是不可以作为master来使用的。 经过本次更新,我们可以给Azure上的MySQL数据库创建一个…

    MySQL 2023年4月12日
    00
  • MySQL利用procedure analyse()函数优化表结构

    MySQL提供了procedure analyse()函数,可以用于优化表结构。它可以将表的数据类型、字符集、NULL值、默认值、注释等信息进行统计,帮助开发者了解表的特点以及基于这些信息优化表结构。 下面介绍如何利用procedure analyse()函数优化表结构,具体步骤如下: 执行procedure analyse()函数 SELECT * FRO…

    MySQL 2023年5月19日
    00
  • MySQL学习笔记-索引

    索引 索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。 无索引的查找:全表扫描(将整张表遍历一遍),性能极低。 有索引的查找:数据库系统在存储数据的同时会维护一种数据结构(如二叉…

    MySQL 2023年4月17日
    00
  • 【MySQL速通篇001】5000字吃透MySQL部分重要知识点

    MySQL主键和外键知识点 | 主键的概念 | 主键的创建 | desc 表名 | show create table 表名; | 自增列起 始值设置 | 设置自增列初始值语句 | 自增列步长设置 | 唯一索引知识点 | 创建唯一索引的方式 | 外键变种 详细知识点 | 什么是外键变种 | 外键变种之多对多 | 数据行操作补充 | limit以及order …

    MySQL 2023年4月11日
    00
  • windows上安装mysql5.7

    安装前准备: 系统:windows7-x64 MySql:mysql5.7.19-X64-windows压缩包 安装步骤: 在windows上安装mysql有两种方式,一种是安装mysql压缩包,一种是图形化的安装,只要是配置好my.ini配置文件,压缩包安装比图形化更快更简单。这篇文章主要说明mysql压缩包的安装步骤。 一、新建数据库文件存放目录 将my…

    MySQL 2023年4月12日
    00
  • MySQL数据库安全配置介绍

    下面我将详细讲解MySQL数据库安全配置的攻略。 1. 强密码设置 MySQL中强密码的设置非常重要,可以有效防止恶意攻击者通过猜测密码或暴力破解攻击进行入侵。 1.1 密码复杂度设置 可以通过修改my.cnf配置文件来设置密码复杂度,如下: [mysqld] validate_password_policy=STRONG validate_password…

    MySQL 2023年5月19日
    00
  • 微信昵称带符号导致插入MySQL数据库时出错的解决方案

    下面是详细讲解“微信昵称带符号导致插入MySQL数据库时出错的解决方案”的完整攻略。 问题描述 当用户在微信中设置昵称时,有可能会使用到一些特殊符号,例如“#”、“@”等。如果这些特殊符号在插入MySQL数据库时没有被转义,就有可能导致SQL语句出错,影响数据的插入或查询。下面我们来看一下具体的情况。 假设我们有一个用户表,其中包含了用户的昵称信息。我们使用…

    MySQL 2023年5月18日
    00
  • MySQL实现数据插入操作的示例详解

    那么接下来我将详细讲解“MySQL实现数据插入操作的示例详解”的完整攻略。 1. 创建表格 首先,在进行数据插入操作之前,我们需要先创建一个表格,来存储我们即将插入的数据。下面是一个简单的例子: CREATE TABLE students ( id INT NOT NULL PRIMARY KEY, name VARCHAR(30) NOT NULL, ag…

    MySQL 2023年5月18日
    00
合作推广
合作推广
分享本页
返回顶部