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 limit分页优化方法分享

    一下是「mysql limit分页优化方法分享」的完整攻略。 一、问题概述 在处理大量数据时,往往需要进行分页处理。而mysql中的limit语句便是用于分页的一个重要方法。但在数据量较大的情况下,使用limit语句进行分页容易导致性能问题。因此,本文将介绍mysql limit分页优化的方法。 二、基础知识 在介绍mysql limit分页优化的方法之前,…

    MySQL 2023年5月19日
    00
  • ☆常用的Sql语句汇总(DDL/DML)

    常用的sql语句汇总 1、获取所有表名、表信息 里面有表注释 数据库种类 sql 备注 mysql — 获取所有表名、视图名show tables– 获取 dev_test_data数据库 所有表、视图信息select * from information_schema.tables where table_schema=’dev_test_data’-…

    MySQL 2023年5月6日
    00
  • MySQL数据库中delimiter的作用概述

    以下的文章主要是向大家描述的是MySQL数据库中delimiter的作用是什么?我们一般都认为这个命令和存储过程关系不大,到底是不是这样的呢?以下的文章将会给你相关的知识,望你会有所收获。 其实就是告诉MySQL解释器,该段命令是否已经结束了,MySQL数据库是否可以执行了。默认情况下,delimiter是分号;。在命令行客户端中,如果有一行命令以分号结束,…

    MySQL 2023年4月13日
    00
  • 解决MySql客户端秒退问题(找不到my.ini)

    解决MySql客户端秒退问题(找不到my.ini) 问题描述 在启动MySql客户端时,出现了秒退现象,无论是通过命令行启动还是双击桌面图标启动,都会弹出一个命令行窗口短暂出现,然后又迅速消失。而当尝试通过cmd命令启动时,会提示找不到my.ini文件的错误信息。 问题原因 MySql客户端启动需要读取数据库的配置文件my.ini,如果MySql客户端找不到…

    MySQL 2023年5月18日
    00
  • SQL语句优化方法30例(推荐)

    SQL语句优化对于数据库性能优化是非常重要的一步,让我们了解一下SQL语句优化的30种方法。 一、SQL语句优化基础 1.理解查询计划 在优化SQL语句之前,应该先了解查询计划,也就是数据库优化器生成的执行SQL语句的步骤。可以通过EXPLAIN来查看查询计划。 2.避免在WHERE子句中使用函数 在WHERE子句中使用函数会影响索引的使用效果,降低查询效率…

    MySQL 2023年5月19日
    00
  • hadoop中hive配置mysql

    1.首先下载hive 下载地址   选择带有 bin 选项的  ,不然以后还要自己编译 解压安装 移动到/usr/local/hive  下 进入hive目录,进入conf cp hive-env.sh.template hive-env.sh cp hive-default.xml.template hive-site.xml cp hive-log4j2…

    MySQL 2023年4月13日
    00
  • PHP开发中常见的安全问题详解和解决方法(如Sql注入、CSRF、Xss、CC等)

    PHP开发中常见的安全问题详解和解决方法 在PHP开发过程中,安全问题一直是一个重要的话题。下面我们将介绍PHP开发中常见的安全问题以及相应的解决方法。 1. Sql注入 Sql注入攻击是指攻击者利用可通过输入数据、插入/修改数据等方式向应用程序传递非法的Sql查询语句,以便执行恶意的Sql语句,从而达到某种不正当目的的攻击行为。比如利用Sql注入攻击,攻击…

    MySQL 2023年5月18日
    00
  • MySQL自动编号与主键

    1、自动编号(AUTO_INCREMENT),必须与主键组合使用 默认情况下,起始值为1,增量也为1。 2、主键(PRIMARY KEY) 每张数据表只能存在一个主键 主键保证记录的唯一性 主键自动为NOT NULL 3、AUTO_INCREMENT必须与主键一起使用,主键不一定必须与AUTO_INCREMENT一起使用。 mysql> CREATE …

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