LoginSignup
21
25

More than 5 years have passed since last update.

Oracleのテストデータを大量に作成する

Posted at

はじめに

バックアップの時間計測などの検証を行う際に、なんでもいいからデータが欲しい!ということで、色々調べて実験してみました。

ユーザの作成

他に影響を与えたくないので、テスト用のユーザを作成します。

CREATE USER test IDENTIFIED BY "パスワード"
default tablespace USERS
temporary tablespace TEMP
profile default;

テーブルの作成

CREATE TABLE test.A
(
DT            DATE,
EIJI          VARCHAR(120),
KANA          VARCHAR(50),
CD            VARCHAR2(10),
KIN           NUMBER(9,0)
);

データの投入

以下のデータを投入するSQLです。
ひらがな以外はランダムです。これだけあればそれっぽいかなぁ~と・・・
・日付
・半角英数字
・ひらがな
・コード
・整数

INSERT /*+ APPEND */ INTO TEST.A NOLOGGING
SELECT 
--DT 2004/01/01から2014/12/31のランダム日付を取得
  TO_DATE('20040101','YYYYMMDD')
  +MOD(ABS(DBMS_RANDOM.RANDOM())
  ,TO_DATE('20150101','YYYYMMDD')-TO_DATE('20040101','YYYYMMDD')) DT
--EIJI 大文字のアルファベット文字と数字で文字列
  ,DBMS_RANDOM.STRING('X', 100)
--KANA かなを固定入力
  ,'あいうえおかきくけこさしすせそ'
--CD ランダムコードを取得
  ,TO_CHAR(ABS(DBMS_RANDOM.RANDOM()),'FM0000000000') CD
--KIN (-99,999から99,999)の間のランダム整数を取得
  ,MOD(DBMS_RANDOM.RANDOM(),100000) KIN
FROM
(SELECT 0 FROM ALL_CATALOG WHERE ROWNUM <= 1000) 
,(SELECT 0 FROM ALL_CATALOG WHERE ROWNUM <= 1000)                      
--1000×1000=100万件
;
commit;

ついでにインデックスも作成

CREATE INDEX test.idx_test_A_table ON test.A(DT);
21
25
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
21
25