Oracle Databaseの性能テストをする際に、大量のテストデータが必要になる場合があると思います。
そんな時にアプリケーションを作成するのは時間がかかりますし、データを用意するのも大変です。
今回はプロシージャを使って、簡単に大量のデータを作成する方法を紹介します。
とりあえず10万件のテストデータを作成してみる
テストテーブルを作成します。
SQL> create table dekiru (
2 no number(10)
3 );
Table created.
テストテーブルに10万件をinsertしてみます。
SQL> begin
2 for i in 1..100000 loop
3 insert into dekiru values(i);
4 end loop;
5 commit ;
6 end;
7 /
PL/SQL procedure successfully completed.
insertできているか件数カウントしてみます。
SQL> select count(*) from dekiru;
COUNT(*)
----------
100000
10万件のランダムな文字列のテストデータを作成してみる
テストテーブルを作成します。
SQL> create table dekiru_st (
2 no number(10),
3 st char(10)
4 );
Table created.
ランダムな文字列生成は、dbms_random.string プロシージャを使用します。
第一引数 ‘x’ は 大文字のアルファベット文字と数字で文字列を戻します。
第二引数 10 は戻す文字列の長さを指定します。
SQL> select dbms_random.string('x',10) from dual;
DBMS_RANDOM.STRING('X',10)
-----------------------------
A1BRN5R2EV
10万件のランダムな文字列をテストテーブルにinsertしてみます。
SQL> begin
2 for i in 1..100000 loop
3 insert into dekiru_st values(i,dbms_random.string('x',10));
4 end loop;
5 commit ;
6 end;
7 /
PL/SQL procedure successfully completed.
insertできているか件数カウントしてみます。
SQL> select count(*) from dekiru_st;
COUNT(*)
----------
100000
こんな感じで入っています。(rownumで絞ってみました)
SQL> select * from dekiru_st where rownum <=5;
NO ST
---------- ----------
1 KWV0T66VLU
2 M8OITQ0S60
3 12T0UUS502
4 1LQ0XNLJ76
5 SDJI74SBKT