はじめに
テストデータを作り出すツールはいくつか存在しますが、性能試験などでとりあえずデータを投入したいだけであれば、ツールを使うまでもなく簡単にできます。とは言っても頻繁につかうものではないので、毎回忘れてしまいます。
そこで備忘録として書き留めておくことにします。
対象テーブルの構成
通常使うテーブルは、ほぼ以下の4種類の型で構成されています。
- 文字列(PK)
- 文字列
- 数値
- 日付+時刻
※LOB型もあるかもしれませんが、今回は省略
テストデータ生成方法
- 文字列(PK)
- TO_CHAR()関数 + カウンタを利用(一意制約違反にならないようにします)
- 文字列
- dbms_random.string()関数 or 固定文字列を利用
- 数値
- カウンタ&MOD()関数 or 固定数値を利用
- 日付+時刻
- systimestampを利用
サンプル
コード見た方が早いですね。
対象テーブル
こんなテーブルがあったとします。
CREATE TABLE EMP
(
empno VARCHAR2(10),
empname VARCHAR2(50),
gender NUMBER(1,0),
description VARCHAR2(100),
update_time TIMESTAMP,
CONSTRAINT pk1 PRIMARY KEY(empno)
)
TABLESPACE XXX;
テストデータ生成(PL/SQL)
begin
for i in 0..10000 loop
insert into EMP values(
TO_CHAR( i, '000000000' ),
dbms_random.string('x', 50 ),
MOD( 3, i ),
'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
systimestamp
);
end loop;
commit;
end;
/
※最後の1回でcommitするようになっているので、件数が多い場合はcommit間隔を制御する必要があります。