有没有一种简单的方法在mysql中生成测试数据?

时间:2015-08-14 07:55:22

标签: mysql sql testing

我想在mysql中生成测试数据

假设有这样的表,

create table person (
  id int auto_increment primary key,
  name text,
  age int,
  birth_day date
);

让我知道如何以简单的方式创建测试数据。

BTW我知道使用stdin的一些方法

repeat 5 echo 'insert into person (name, age, birth_day) select concat("user", ceil(rand() * 100)), floor(rand()*100), date_add(date("1900/01/01"), interval floor(rand()*100) year);'

repeat 5 perl -M"Data::Random qw(:all)" -E 'say sprintf qq#insert into person (name, age, birth_day) values ("user%s", %s,"%s");#,  (int rand(100)), (int rand(100)), rand_date(min => "1900-01-01", max=>"1999-12-31")'

我认为后者可能更好,因为它不使用mysql函数。

3 个答案:

答案 0 :(得分:2)

这是为mysql生成虚拟数据的最简单的数据库;

http://dummydata.me/generate

和这里;

https://dba.stackexchange.com/questions/449/tool-to-generate-large-datasets-of-test-data

编辑:dummydata.me不起作用,我找到了另一种工作方式:)

试试这个: http://www.generatedata.com/

答案 1 :(得分:0)

您可以尝试http://paulthedutchman.nl/datagenerator-online。也可以作为脱机版本使用,以在本地开发环境上使用。与其他数据生成器相比,它具有更多选择。 不适合移动设备,因为它使用ExtJS,请在计算机上使用它。

脱机版本会自动扫描您的数据库和表结构。

答案 2 :(得分:0)

作为系统管理员,我使用允许生成动态数据的库 Faker

对于您的数据库 person,您可以执行以下操作

#!/usr/bin/env python

import random

import mysql.connector             
from mysql.connector import Error  
from faker import Faker

Faker.seed(33422)
fake = Faker()

conn = mysql.connector.connect(host=db_host, database=db_name,
                               user=db_user, password=db_pass)
cursor = conn.cursor()
  
row = [fake.first_name(), random.randint(0,99), fake.date_of_birth()]

cursor.execute(' \                                                                          
     INSERT INTO `person` (name, age, birth_day) \ 
     VALUES ("%s", %d, "%s",);' % (row[0], row[1], row[2])

conn.commit()

然后您可以通过循环来改进脚本,并且在每次迭代时 faker 将创建随机 namebirth_date。 Faker 有一个它可以生成的数据类型(称为“提供者”)的扩展列表,完整列表可在 https://faker.readthedocs.io/en/master/providers.html 获得。