【SQL】MySQLで大量データを作成したい

MySQL

作り方をメモ

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万件ほどのテストデータを作成できました。

タイトルとURLをコピーしました