MySQLで検証なりテストなりする場合には、大量のデータを用意する必要がままあります。
そのための方法の1つとして、ストアドプロシージャがありますが
いざ作ろうとしてネットを検索しても、わかりづらい情報しかなかったので。。。
環境
Mac:10.12.5
MySQL:5.7.18
解説
下記のSQLを実行する度に初期化されます。(リトライし易い
@limit:繰り返したい回数
# テーブル削除
DROP TABLE IF EXISTS test;
# テーブル作成
CREATE TABLE `test` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`cp_no` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2001 DEFAULT CHARSET=utf8;
# ストアドプロシージャ削除
DROP PROCEDURE IF EXISTS insert_random_data;
delimiter //
# ストアドプロシージャ作成
CREATE PROCEDURE insert_random_data()
BEGIN
SET @limit = 200;
SET @pos = 0;
WHILE @limit > @pos DO
insert into test (`cp_no`) values
(FLOOR(RAND() * 100000));
SET @pos = @pos + 1;
END WHILE;
END
//
delimiter ;
#実行
call insert_random_data();