Help us understand the problem. What is going on with this article?

MySQLで簡単にランダムなテストデータを作成する方法

More than 5 years have passed since last update.

MySQLで大量のダミーデータをテスト用に必要だったため、WEBをググって情報を集めてみました。
SQLだけで実現しているので使いやすいかと思います。

データ型別のランダムデータ作成方法

INT(1〜100の範囲)

SELECT CEIL(RAND() * 100);

CHAR(10文字)

SELECT SUBSTRING(MD5(RAND()), 1, 10);

CAHR(特定文字列とランダム数値の連結)
※ランダム数値をAUTO_INCREMENT値にすればテーブルでユニークな文字列となる

SELECT CONCAT('ユーザー', CEIL(RAND() * 100));

DATE(2014-07-01から31日の範囲)

SELECT DATE_ADD('2014-07-01', INTERVAL 31 * RAND() DAY);

DATETIME(2014-07-01 00:00:00から31日の範囲)

SELECT ADDTIME(CONCAT_WS(' ','2014-07-01' + INTERVAL RAND() * 31 DAY, '00:00:00'), SEC_TO_TIME(FLOOR(0 + (RAND() * 86401))));

大量のテストデータの作成方法

テーブルを作成

CREATE TABLE item (
  id INT PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(10),
  description VARCHAR(30),
  price INT UNSIGNED,
  created_at DATETIME
);

テーブルに大量の空データを挿入

INSERT INTO item () VALUES (); --1行作成
INSERT INTO item (id) SELECT 0 FROM item; --2行になる
INSERT INTO item (id) SELECT 0 FROM item; --4行になる
INSERT INTO item (id) SELECT 0 FROM item; --8行になる
INSERT INTO item (id) SELECT 0 FROM item; --16行になる
-- 20回繰り返すと100万行になる

空データを型に合わせてランダムな値に更新

UPDATE item SET
  name = CONCAT('商品', id),
  description = SUBSTRING(MD5(RAND()), 1, 30),
  price = CEIL(RAND() * 10000),
  created_at = ADDTIME(CONCAT_WS(' ','2014-01-01' + INTERVAL RAND() * 180 DAY, '00:00:00'), SEC_TO_TIME(FLOOR(0 + (RAND() * 86401))));

参考にしたサイト

[mysql] 日付と文字列(単語)ランダムデータの入力
さくっと100万件レベルのデータのテストデータを作成する方法

tayasu
You have your punk, I have mine.
sensyn-robotics
「ドローンによる業務の完全自動化」を実現し社会課題を抜本的に解決
https://www.sensyn-robotics.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした