MySQLで大量のダミーデータをテスト用に必要だったため、WEBをググって情報を集めてみました。
SQLだけで実現しているので使いやすいかと思います。
##データ型別のランダムデータ作成方法
INT(1〜100の範囲)
SELECT CEIL(RAND() * 100);
CHAR(10文字)
SELECT SUBSTRING(MD5(RAND()), 1, 10);
CHAR(特定文字列とランダム数値の連結)
※ランダム数値を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))));