LoginSignup
0
0

More than 3 years have passed since last update.

MySQLテストデータ生成

Last updated at Posted at 2019-09-24

MySQLにテストデータを大量に突っ込む際のベストプラクティスをまとめる。

ここら辺を参考にした。
https://qiita.com/tayasu/items/c5ddfc481d6b7cd8866d
https://qiita.com/SuguruOoki/items/8a00c237737d143a529a

create_table.sql
DROP TABLE IF EXISTS `sample`;
CREATE TABLE IF NOT EXISTS `sample` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`name` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
`create_date` INTEGER NOT NULL,
`update_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1;

適当に10件データを登録

insert.sql

INSERT INTO `sample` (`id`, `name`, `create_date`, `update_date`) VALUES
(NULL, SUBSTRING(MD5(RAND()), 1, 50), CEIL(RAND() * 2678400 + 1561939200), CURRENT_TIMESTAMP),
(NULL, SUBSTRING(MD5(RAND()), 1, 50), CEIL(RAND() * 2678400 + 1561939200), CURRENT_TIMESTAMP),
(NULL, SUBSTRING(MD5(RAND()), 1, 50), CEIL(RAND() * 2678400 + 1561939200), CURRENT_TIMESTAMP),
(NULL, SUBSTRING(MD5(RAND()), 1, 50), CEIL(RAND() * 2678400 + 1561939200), CURRENT_TIMESTAMP),
(NULL, SUBSTRING(MD5(RAND()), 1, 50), CEIL(RAND() * 2678400 + 1561939200), CURRENT_TIMESTAMP),
(NULL, SUBSTRING(MD5(RAND()), 1, 50), CEIL(RAND() * 2678400 + 1561939200), CURRENT_TIMESTAMP),
(NULL, SUBSTRING(MD5(RAND()), 1, 50), CEIL(RAND() * 2678400 + 1561939200), CURRENT_TIMESTAMP),
(NULL, SUBSTRING(MD5(RAND()), 1, 50), CEIL(RAND() * 2678400 + 1561939200), CURRENT_TIMESTAMP),
(NULL, SUBSTRING(MD5(RAND()), 1, 50), CEIL(RAND() * 2678400 + 1561939200), CURRENT_TIMESTAMP),
(NULL, SUBSTRING(MD5(RAND()), 1, 50), CEIL(RAND() * 2678400 + 1561939200), CURRENT_TIMESTAMP);

CROSS JOINでONの条件をいじることでデータを特定の量増やせる。今回は*10してみた。
複数回実行することで、データをスケールさせる。

multi.sql
INSERT INTO `sample` (`name`, `create_date`, `update_date`) SELECT T1.`name`, T1.`create_date`, T1.`update_date` from `sample` as T1 CROSS JOIN `sample` as T2 ON T2.id IN (1, 2, 3, 4, 5, 6, 7, 8, 9);
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0