作り方をメモ
empテーブルのDDL
CREATE TABLE `emp` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`dept` int(255) DEFAULT NULL,
`age` int(255) DEFAULT NULL,
`sex` int(10) DEFAULT NULL,
`name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`address` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`bikou` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`birth` date DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
まずempテーブルに空データを1件投入
INSERT INTO emp () VALUES ();
レコード数を倍にするINSERTを行う。
1回流すと2件、2回流すと4件と倍々にレコードが増えていく。
※ちなみに今回は2の23乗で約800万件ということで、23回流すことになります。
INSERT INTO emp (id) SELECT 0 FROM emp;
最後に各カラムにランダムなデータを入れていく。細かい意味は割愛。
UPDATE
emp
SET
dept = FLOOR(RAND() * 10)+ 1,
age = FLOOR(RAND() * 100)+ 1,
sex = FLOOR(RAND() * 3)+ 1,
name = SUBSTRING(MD5(RAND()), 1, 30),
address = SUBSTRING(MD5(RAND()), 1, 30),
bikou = SUBSTRING(MD5(RAND()), 1, 30),
birth = '1990-01-01' + INTERVAL FLOOR(RAND() * 365 * 30) DAY;
PCのスペックによりますが、20分ほどでこのようなデータができました。
※キー項目のid列はauto incrementですが、歯抜けができてしまうのが残念。

あっという間に800万件ほどのテストデータを作成できました。
