2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

サクッとOracleにテストデータを投入する

Last updated at Posted at 2020-07-05

はじめに

テストデータを作り出すツールはいくつか存在しますが、性能試験などでとりあえずデータを投入したいだけであれば、ツールを使うまでもなく簡単にできます。とは言っても頻繁につかうものではないので、毎回忘れてしまいます。
そこで備忘録として書き留めておくことにします。

対象テーブルの構成

通常使うテーブルは、ほぼ以下の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間隔を制御する必要があります。

2
0
2

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
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?