5.13.1 HiRDB/シングルサーバの場合

<この項の構成>
(1) 表へのデータロード
(2) 横分割表への表単位のデータロード
(3) 横分割表へのRDエリア単位のデータロード
(4) LOB列構成基表とLOB列のデータロード
(5) LOB列構成基表だけのデータロード
(6) LOB列だけのデータロード
(7) 監査証跡表へのデータロード
(8) 自動採番機能を使用したデータロード

(1) 表へのデータロード

例1
表(TABLE1)にデータロードします。この例では,入力データファイルがDAT形式の場合と,固定長データ形式の場合について説明します。
なお,次の表及びインデクスが定義されているものとします。
  • 表の定義

 CREATE TABLE TABLE1(C1 INT,C2 CHAR(8),C3 INT) IN PDB
USER01

  • インデクスの定義

 CREATE INDEX INDEX1 ON TABLE1(C1) IN PDBUSER03

[概要]
[図データ]
[入出力ファイルとRDエリアの関連図]
[図データ]
(a) 入力データファイルがDAT形式の場合
[入力データファイルの内容]

1,ABCDEFG,99999,
2,a,-1,
3,XYZ,100,
    :

[実行するコマンドの説明]
表(TABLE1)へデータロードします。
c:¥hirdb¥pdload¥column_inf:列構成情報ファイルの名称
c:¥hirdb¥pdload¥control_file:制御情報ファイルの名称
[列構成情報ファイル(c:¥hirdb¥pdload¥column_inf)の内容]

C1                  1
C2                  1
C3                  1
*skipdata*          2

[説明]
  1. 入力データをTABLE1の列(C1,C2,C3)の順に格納
  2. 行の末尾のセパレータ文字を無視させるためのスキップデータ文
[制御情報ファイル(c:¥hirdb¥pdload¥control_file)の内容]

source c:¥hirdb¥pdload¥load_file1 error=c:¥hirdb¥pdload¥err1   1
index INDEX1 c:¥hirdb¥pdload¥index_inf1                        2
sort c:¥hirdb¥pdload¥sortwork,8192                             3

[説明]
  1. 入力データファイル,及び入力データエラーがあった場合にエラーを出力するファイルの指定
    c:¥hirdb¥pdload¥load_file1:入力データファイルの名称
    c:¥hirdb¥pdload¥err1:エラー情報ファイルの名称
  2. インデクス情報を出力するインデクス情報ファイルの指定
    INDEX1:インデクス識別子
    c:¥hirdb¥pdload¥index_inf1:インデクス情報ファイルの名称
  3. ソート用ワークディレクトリの指定
    c:¥hirdb¥pdload¥sortwork:ソート用ワークファイルを作成するディレクトリの名称
    8192:ソート用バッファサイズ(単位:キロバイト)
(b) 入力データファイルが固定長データ形式の場合
[入力データファイルの内容]

1  ABCDEFG  99999
2  a        -1
3  XYZ      100
      :

注 行末に改行記号があります。

[実行するコマンドの説明]
表(TABLE1)へデータロードします。
-a:入力データファイルが固定長データ形式の場合の指定
c:¥hirdb¥pdload¥column_inf:列構成情報ファイルの名称
c:¥hirdb¥pdload¥control_file:制御情報ファイルの名称
[列構成情報ファイル(c:¥hirdb¥pdload¥column_inf)の内容]

C1,type=char(3)              1
C2,type=char(8)              1
C3,type=char(6)              1
*skipdata*,length=1          2

[説明]
  1. 入力データの列のデータ型を記述
  2. 改行記号を格納しないようにするためのスキップデータ文
[制御情報ファイル(c:¥hirdb¥pdload¥control_file)の内容]

source c:¥hirdb¥pdload¥load_file1 error=c:¥hirdb¥pdload¥err1   1
index INDEX1 c:¥hirdb¥pdload¥index_inf1                        2
sort c:¥hirdb¥pdload¥sortwork,8192                             3

[説明]
  1. 入力データファイル,及び入力データエラーがあった場合にエラーを出力するファイルの指定
    c:¥hirdb¥pdload¥load_file1:入力データファイルの名称
    c:¥hirdb¥pdload¥err1:エラー情報ファイルの名称
  2. インデクス情報を出力するインデクス情報ファイルの指定
    INDEX1:インデクス識別子
    c:¥hirdb¥pdload¥index_inf1:インデクス情報ファイルの名称
  3. ソート用ワークディレクトリの指定
    c:¥hirdb¥pdload¥sortwork:ソート用ワークファイルを作成するディレクトリの名称
    8192:ソート用バッファサイズ(単位:キロバイト)
(c) 入力データファイルが固定長データ形式固有のデータ形式の場合
表(TABLE2)にデータロードします。この例では,入力データファイルが固定長データ形式固有のデータ形式の場合について説明します。
  • 表の定義

 CREATE TABLE TABLE2(C1 DECIMAL(7,2),
                     C2 CHAR(10),
                     C3 DECIMAL(10,4));

[入力データファイル(/usr/input_file)の内容]
バイナリエディタで参照した場合の入力データファイルの内容です。16進数で表現されています。データの先頭から7バイトがC1列に格納されるデータです。8バイト~17バイトがC2列に,18バイト~22バイトがC3列に格納されます。

303030303130304142434445464748494​a00000001​
202020202020206162636465666768696​a00000002​
303030303330302020202020202020202000000003​

[実行するコマンドライン]

pdload -a -c c:¥hirdb¥pdload¥column_inf TABLE2 c:¥hirdb¥pdload¥control_file

[実行するコマンドの説明]
表(TABLE2)へデータロードします。
-a:入力データファイルが固定長データ形式の場合の指定
c:¥hirdb¥pdload¥column_inf:列構成情報ファイルの名称
c:¥hirdb¥pdload¥control_file:制御情報ファイルの名称
[列構成情報ファイル(c:¥hirdb¥pdload¥column_inf)の内容]

C1,type=adec(7,2)            1
C2,type=char(10)             2
C3,type=bdec(4)              3

[説明]
  1. 文字列形式の数値で記述した,小数点の無いデータの長さは7バイト,後方から2バイトは小数点以下の値としてDECIMAL(7,2)に格納
  2. 長さ10バイトのデータをCHAR(10)に格納
  3. 長さ4バイトの領域に格納した2進数のデータをDECIMAL(10,4)に格納
[制御情報ファイル(c:¥hirdb¥pdload¥control_file)の内容]

option allspace=zero                                         1
source c:¥hirdb¥pdload¥input_file error=c:¥hirdb¥pdload¥err  2

[説明]
  1. DECIMAL列に格納する入力データが空白の場合,「0」を格納する指定
  2. 入力データファイル,及び入力データエラーがあった場合にエラーを出力するファイルの指定

(2) 横分割表への表単位のデータロード

例2
横分割表(TABLE1)に,表単位にデータロードします。
なお,次の表及びインデクスが定義されているものとします。
  • 表の定義

 CREATE TABLE TABLE1(C1 INT NOT NULL,C2 CHAR(8),C3 INT)
              IN ((PDBUSER01) C1 > 10,(PDBUSER02))

  • インデクスの定義(分割キーインデクス)

 CREATE INDEX INDEX1 ON TABLE1(C1) IN ((PDBUSER03),(PDBUSER04))

  • インデクスの定義(非分割キーインデクス)

 CREATE INDEX INDEX2 ON TABLE1(C2,C1) IN (PDBUSER05)

[概要]
[図データ]
[入出力ファイルとRDエリアの関連図]
[図データ]
[実行するコマンドの説明]
横分割表(TABLE1)へ表単位にデータロードします。
c:¥hirdb¥pdload¥control_file:制御情報ファイルの名称
[制御情報ファイル(c:¥hirdb¥pdload¥control_file)の内容]

source c:¥hirdb¥pdload¥load_file1 error=c:¥hirdb¥pdload¥err1
       errdata=c:¥hirdb¥pdload¥err_data,1000                        1
idxwork c:¥hirdb¥pdload¥idx_file                                    2
sort c:¥hirdb¥pdload¥sortwork,8192                                  3

[説明]
  1. 入力データファイル,及び入力データエラーがあった場合のエラー情報とエラーとなった行データを出力するファイルの指定(ただし,入力データエラーの出力は1000件までとします)
    c:¥hirdb¥pdload¥load_file1:入力データファイルの名称
    c:¥hirdb¥pdload¥err1:エラー情報ファイルの名称
    c:¥hirdb¥pdload¥err_data:エラーデータファイルの名称
  2. インデクス情報ファイルを作成するディレクトリの指定
    c:¥hirdb¥pdload¥idx_file:インデクス情報ファイルを作成するディレクトリの名称
  3. ソート用ワークディレクトリの指定
    c:¥hirdb¥pdload¥sortwork:ソート用ワークファイルを作成するディレクトリの名称
    8192:ソート用バッファサイズ(単位:キロバイト)

(3) 横分割表へのRDエリア単位のデータロード

例3
横分割表(TABLE1)に,RDエリア単位にデータロードします。PDBUSER01,及びPDBUSE02に対して,2回実行します。
なお,次の表及びインデクスが定義されているものとします。
  • 表の定義

 CREATE TABLE TABLE1(C1 INT NOT NULL,C2 CHAR(8),C3 INT)
              IN ((PDBUSER01) C1 > 10,(PDBUSER02))

  • インデクスの定義(分割キーインデクス)

 CREATE INDEX INDEX1 ON TABLE1(C1) IN ((PDBUSER03),(PDBUSER04))

  • インデクスの定義(非分割キーインデクス)

 CREATE INDEX INDEX2 ON TABLE1(C2,C1) IN (PDBUSER05)

[概要]
[図データ]
[入出力ファイルとRDエリアの関連図]
[図データ]
(a) PDBUSER01へのデータロード
[実行するコマンドの説明]
横分割表(TABLE1)へRDエリア(PDBUSER01)単位にデータロードします。
c:¥hirdb¥pdload¥control_file:制御情報ファイルの名称
[制御情報ファイル(c:¥hirdb¥pdload¥control_file)の内容]

source PDBUSER01 c:¥hirdb¥pdload¥load_file1
       error=c:¥hirdb¥pdload¥err1                         1
idxwork c:¥hirdb¥pdload¥idx_file                          2
sort c:¥hirdb¥pdload¥sortwork,8192                        3

[説明]
  1. 入力データファイル,及び入力データエラーがあった場合にエラーを出力するファイルの指定
    PDBUSER01:入力データを格納する表があるRDエリアの名称
    c:¥hirdb¥pdload¥load_file1:入力データファイルの名称
    c:¥hirdb¥pdload¥err1:エラー情報ファイルの名称
  2. インデクス情報ファイルを作成するディレクトリの指定
    c:¥hirdb¥pdload¥idx_file:インデクス情報ファイルを作成するディレクトリの名称
  3. ソート用ワークディレクトリの指定
    c:¥hirdb¥pdload¥sortwork:ソート用ワークファイルを作成するディレクトリの名称
    8192:ソート用バッファサイズ(単位:キロバイト)
(b) PDBUSER02へのデータロード
[実行するコマンドの説明]
横分割表(TABLE1)へRDエリア(PDBUSER02)単位にデータロードします。
c:¥hirdb¥pdload¥control_file:制御情報ファイルの名称
[制御情報ファイル(c:¥hirdb¥pdload¥control_file)の内容]

source PDBUSER02 c:¥hirdb¥pdload¥load_file2
       error=c:¥hirdb¥pdload¥err2                         1
idxwork c:¥hirdb¥pdload¥idx_file                          2
sort c:¥hirdb¥pdload¥sortwork,8192                        3

[説明]
  1. 入力データファイル,及び入力データエラーがあった場合にエラーを出力するファイルの指定
    PDBUSER02:入力データを格納する表があるRDエリアの名称
    c:¥hirdb¥pdload¥load_file2:入力データファイルの名称
    c:¥hirdb¥pdload¥err2:エラー情報ファイルの名称
  2. インデクス情報ファイルを作成するディレクトリの指定
    c:¥hirdb¥pdload¥idx_file:インデクス情報ファイルを作成するディレクトリの名称
  3. ソート用ワークディレクトリの指定
    c:¥hirdb¥pdload¥sortwork:ソート用ワークファイルを作成するディレクトリの名称
    8192:ソート用バッファサイズ(単位:キロバイト)
(c) INDEX2の作成

INDEX2はこのままでは使用できません。

インデクス情報を出力したインデクス情報ファイル3,及びインデクス情報ファイル4を使用して,pdrorgでインデクスの一括作成(-k ixmk)をしてください。

(4) LOB列構成基表とLOB列のデータロード

例4
LOB列がある表(TABLE2)に対して,LOB列構成基表とLOB列を同時にデータロードします。
なお,次の表及びインデクスが定義されているものとします。
  • 表の定義

 CREATE TABLE TABLE2(C1 INT,C2 BLOB IN LOBUSER01) IN PDBUSER01

  • インデクスの定義

 CREATE INDEX INDEX2 ON TABLE2(C1) IN PDBUSER02

[概要]
[図データ]
[入出力ファイルとRDエリアの関連図]
[図データ]
[実行するコマンドの説明]
LOB列がある表(TABLE2)へ表単位にデータロードします。
c:¥hirdb¥pdload¥control_file:制御情報ファイルの名称
[制御情報ファイル(c:¥hirdb¥pdload¥control_file)の内容]

source c:¥hirdb¥pdload¥load_file1 error=c:¥hirdb¥pdload¥err1   1
index INDEX2 c:¥hirdb¥pdload¥index_inf1                        2
sort c:¥hirdb¥pdload¥sortwork,8192                             3
lobdata c:¥hirdb¥pdload¥lob                                    4
lobmid c:¥hirdb¥pdload¥lobmid_file1                            5

[説明]
  1. 入力データファイル,及び入力データにエラーがあった場合にエラーを出力するファイルの指定
    c:¥hirdb¥pdload¥load_file1:入力データファイルの名称
     入力データファイルの内容(DAT形式)
    1,lobfile1
    2,lobfile2
    3,lobfile3
    c:¥hirdb¥pdload¥err1:エラー情報ファイルの名称
  2. インデクス情報を出力するインデクス情報ファイルの指定
    INDEX2:インデクス識別子
    c:¥hirdb¥pdload¥index_inf1:インデクス情報ファイルの名称
  3. ソート用ワークディレクトリの指定
    c:¥hirdb¥pdload¥sortwork:ソート用ワークファイルを作成するディレクトリの名称
    8192:ソート用バッファサイズ(単位:キロバイト)
  4. LOB入力ファイルのディレクトリの指定
    c:¥hirdb¥pdload¥lob:LOB入力ファイルのパス名
  5. LOB列構成基表データロード時にLOB列のデータロードに必要な情報を出力するファイルの指定(これをLOB列のデータロード時にそのまま使用します)
    c:¥hirdb¥pdload¥lobmid_file1:LOB中間ファイルの名称

(5) LOB列構成基表だけのデータロード

例5
LOB列がある表(TABLE2)に対して,LOB列構成基表だけをデータロードします。
なお,次の表及びインデクスが定義されているものとします。
  • 表の定義

 CREATE TABLE TABLE2(C1 INT,C2 BLOB IN LOBUSER01) IN PDBUSER01

  • インデクスの定義

 CREATE INDEX INDEX2 ON TABLE2(C1) IN PDBUSER02

[概要]
[図データ]
[入出力ファイルとRDエリアの関連図]
[図データ]
[実行するコマンドの説明]
LOB列がある表(TABLE2)へ表単位にデータロードします。
c:¥hirdb¥pdload¥control_file:制御情報ファイルの名称
[制御情報ファイル(c:¥hirdb¥pdload¥control_file)の内容]

source c:¥hirdb¥pdload¥load_file1 error=c:¥hirdb¥pdload¥err1   1
index INDEX2 c:¥hirdb¥pdload¥index_inf1                        2
sort c:¥hirdb¥pdload¥sortwork,8192                             3
lobmid c:¥hirdb¥pdload¥lobmid_file1                            4

[説明]
  1. 入力データファイル,及び入力データにエラーがあった場合にエラーを出力するファイルの指定
    c:¥hirdb¥pdload¥load_file1:入力データファイルの名称
     入力データファイルの内容(DAT形式)
    1,lobfile1
    2,lobfile2
    3,lobfile3
    c:¥hirdb¥pdload¥err1:エラー情報ファイルの名称
  2. インデクス情報を出力するインデクス情報ファイルの指定
    INDEX2:インデクス識別子
    c:¥hirdb¥pdload¥index_inf1:インデクス情報ファイルの名称
  3. ソート用ワークディレクトリの指定
    c:¥hirdb¥pdload¥sortwork:ソート用ワークファイルを作成するディレクトリの名称
    8192:ソート用バッファサイズ(単位:キロバイト)
  4. LOB列構成基表データロード時にLOB列のデータロードに必要な情報を出力するファイルの指定
    c:¥hirdb¥pdload¥lobmid_file1:LOB中間ファイルの名称

(6) LOB列だけのデータロード

例6
LOB列がある表(TABLE2)に対して,LOB列だけをデータロードします。
なお,次の表及びインデクスが定義されているものとします。
  • 表の定義

 CREATE TABLE TABLE2(C1 INT,C2 BLOB IN LOBUSER01) IN PDBUSER01

  • インデクスの定義

 CREATE INDEX INDEX2 ON TABLE2(C1) IN PDBUSER02

[概要]
[図データ]
[入出力ファイルとRDエリアの関連図]
[図データ]
[実行するコマンドの説明]
LOB列がある表(TABLE2)へ表単位にデータロードします。
c:¥hirdb¥pdload¥control_file:制御情報ファイルの名称
[制御情報ファイル(c:¥hirdb¥pdload¥control_file)の内容]

lobdata c:¥hirdb¥pdload¥lob                                      1
lobmid c:¥hirdb¥pdload¥lobmid_file1 error=c:¥hirdb¥pdload¥err1   2

[説明]
  1. LOB入力ファイルのディレクトリの指定
    c:¥hirdb¥pdload¥lob:LOB入力ファイルのパス名
    LOB列構成基表データロード時に次の入力データファイルを使用したものとします。
     入力データファイルの内容(DAT形式)
    1,lobfile1
    2,lobfile2
    3,lobfile3
  2. LOB列構成基表データロード時にLOB列のデータロードに必要な情報を出力したファイル,及びLOB入力エラーがあった場合にエラーを出力するファイルの指定
    c:¥hirdb¥pdload¥lobmid_file1:LOB中間ファイルの名称
    c:¥hirdb¥pdload¥err1:エラー情報ファイルの名称

(7) 監査証跡表へのデータロード

例7
監査証跡表(SQL_AUDIT_TRAIL)に対して,データロード待ちの監査証跡ファイルをデータロードします。なお,監査証跡表にはインデクスが定義されていないものとします。
[概要]
[図データ]
[入出力ファイルとRDエリアの関連図]
[図データ]
[実行するコマンドの説明]
監査証跡表(SQL_AUDIT_TRAIL)に対して,データロード待ちの監査証跡ファイル(c:¥hirdb¥audit¥file)をデータロードします。
-b及び-W:監査証跡表へデータロードする場合に必ず指定するオプションです。
c:¥hirdb¥pdload¥control_file:制御情報ファイルの名称
[制御情報ファイル(c:¥hirdb¥pdload¥control_file)の内容]

source (uoc)                                       1
srcuoc param='dir=c:¥hirdb¥audit¥file,file=all'    2

[説明]
  1. 監査証跡データ登録UOCを使用する場合の指定
  2. 監査証跡データ登録UOCに渡すパラメタの指定
    dir=c:¥hirdb¥audit¥file:監査証跡ファイルのHiRDBファイル名
    file=all:データロード待ちのすべての監査証跡ファイルを対象とするため,allを指定

(8) 自動採番機能を使用したデータロード

例8
表(TABLE1)に,指定単位取得方式でデータロードします。このとき,C2列に列データとして順序番号を追加します。
なお,次の表及び順序数生成子が定義されているものとします。
  • 表の定義

 CREATE TABLE USER01.TABLE1(C1 INT,C2 INT,C3 VARCHAR(10)) IN PDBUSER01

  • 順序数生成子の定義
CREATE SEQUENCE USER01.SEQ_A1
AS INTEGER START WITH 1 INCREMENT BY 1 MAXVALUE 9999 CYCLE IN PDBUSER01
[入出力ファイルとRDエリアの関連図]
[図データ]
[実行するコマンドの説明]
表(TABLE1)へデータロードします。
c:¥hirdb¥pdload¥column_inf:列構成情報ファイルの名称
c:¥hirdb¥pdload¥control_file:制御情報ファイルの名称
[列構成情報ファイル(c:¥hirdb¥pdload¥column_inf)の内容]

C1                               1
C3                               1
*adddata*                        2
C2,sequence=(USER01.SEQ_A1)      3

[説明]
  1. 入力データをTABLE1の列(C1,C3)に格納
  2. これ以降の指定が入力データの追加であることを示す追加データ文
  3. 順序数生成子(USER01.SEQ_A1)が生成した順序番号を列C2に格納
[制御情報ファイル(c:¥hirdb¥pdload¥control_file)の内容]

source c:¥hirdb¥pdload¥load_file1     1
option seq_range=1000                    2

[説明]
  1. 入力データファイルの指定
    c:¥hirdb¥pdload¥load_file1:入力データファイルの名称
  2. 順序番号の取得方式の指定(指定単位取得方式)
    seq_range=1000:データロード時に1000個ずつ順序番号を取得するための指定