【MySQL】大量のランダム整数データを生成する

ランダムな整数データが大量に欲しかったので作ってみる。
今回はストアドプロシージャを使う。


1.テーブル定義
これはテキトーに作ればいい。

create table t1 (id int, score int);


2.ランダムデータを生成するINSERT文を用意
テキトーに作ればいいが、バルクインサートの方が速い。
これは手順3のストアドプロシージャで使う。

insert into t1 values 
	(FLOOR(RAND() * 100000), FLOOR(RAND() * 100000)), 
    (FLOOR(RAND() * 100000), FLOOR(RAND() * 100000)),
    (FLOOR(RAND() * 100000), FLOOR(RAND() * 100000)),
    (FLOOR(RAND() * 100000), FLOOR(RAND() * 100000)),
    (FLOOR(RAND() * 100000), FLOOR(RAND() * 100000));

3.ストアドプロシージャを設定する
今回はINSERT文を2000回実行する。
バルクインサートで1回実行するたびに5レコード増えるので、
合計1万レコードをインサートすることになる。
INSERT文のところと、@limitを好きなように編集すればOK。
以下をMySQLコマンドラインに打ち込んでいく。
別にインデントとかはなくていい。

delimiter //
CREATE PROCEDURE insert_random_data()
BEGIN
    SET @limit = 2000;
    SET @pos = 0;
    WHILE @limit > @pos DO
        insert into t1 values 
	    (FLOOR(RAND() * 100000), FLOOR(RAND() * 100000)), 
            (FLOOR(RAND() * 100000), FLOOR(RAND() * 100000)),
            (FLOOR(RAND() * 100000), FLOOR(RAND() * 100000)),
            (FLOOR(RAND() * 100000), FLOOR(RAND() * 100000)),
            (FLOOR(RAND() * 100000), FLOOR(RAND() * 100000));
        SET @pos = @pos + 1;
    END WHILE;
END
//
delimiter ;


4.実行

call insert_random_data();


おまけ.削除

DROP PROCEDURE insert_random_data;