LoginSignup
8
9

More than 5 years have passed since last update.

MySQLで大量のデータを作成するストアドプロシージャの雛形

Posted at

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();

参考

ストアドプロシージャの基本的ななにか

8
9
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
8
9