スケーラブルデータベースサーバ HiRDB Version 8 コマンドリファレンス(UNIX(R)用)

[目次][索引][前へ][次へ]

5.4.14 src_work文(分割入力データファイルの出力先の記述)

RDエリア単位のデータロードを実行する場合に,表単位の入力データファイルからRDエリア単位の入力データファイル(分割入力データファイル)を作成するときに指定します。src_work文は,データロード時に指定するのではなく,データロードの前準備として分割入力データファイルを用意するために指定するものです。

分割入力データファイルの作成の概要を次の図に示します。

図5-14 分割入力データファイルの作成の概要

[図データ]

<適用基準>
横分割表にRDエリア単位にデータロードを並列実行する場合で,かつRDエリアごとに入力データファイルを準備していないときに指定します。
src_work文を使用すると,ユーザがRDエリアごとの入力データファイルを用意する必要がなくなります。

<前提条件>
  1. 入力データファイルは,DAT形式ファイル(拡張DAT形式を含む),及び固定長データ形式ファイルを使用できます。分割入力データファイルも同じ形式で出力します。
  2. 分割入力データファイルを作成する場合,表に対するINSERT権限が必要となります。
  3. 処理対象となる表は横分割表でなければなりません(分割方法,及び列構成には制限なし)。
  4. 分割入力データファイルは,通常ファイルで,かつシングルボリュームでなければなりません。ファイルが既にある場合は上書きされ,ない場合は新規に作成されます。
  5. 分割入力データファイルは,入力データファイルがあるホストと同一ホストに作成されます。
  6. 分割入力データファイル作成時は,データをチェックして出力しますが,次のデータエラーについてはチェックされません。
    ・クラスタキー順序不正
    ・キー重複エラー
    ・LOB列の格納データの不正※1
    ・抽象データ型の格納データの不正※2
    注※1
    次のどちらかです。
    ・LOB入力ファイルにアクセスできない。
    ・LOB列のデータ長がLOB列の定義長より長い。
    注※2
    次のどちらかです。
    ・プラグイン関数のデータチェックでエラーとなる不正データがある。
    ・BLOB型の引数エラー(注※1のエラーと同様)。
  7. 分割入力データファイルは次の名称で作成されます。
    【HiRDB/シングルサーバの場合】
    「src_work文に指定するディレクトリ名」+「入力データファイル名」+「RDエリア名」
    【HiRDB/パラレルサーバの場合】
    「src_work文に指定するディレクトリ名」+「入力データファイル名」+「サーバ名」+「RDエリア名」
     
    上記の絶対パス名やファイル名の長さは,OSの制限を超えないように注意してください。
    入力データファイルを複数指定した場合,「入力データファイル名」は先頭のファイル名となります。
    「RDエリア名」は,表格納用RDエリア名(インナレプリカ機能使用時はオリジナルRDエリア名)となります。
  8. src_work文指定のpdloadの実行では,処理対象表にアクセスすることはありません(処理対象表に排他は掛かりません)。
<この項の構成>
(1) 形式
(2) 説明
(3) 注意事項
(4) 使用例

(1) 形式

 
 src_work 分割入力データファイルの出力先ディレクトリ名
 

(2) 説明

(a) 分割入力データファイルの出力先ディレクトリ名

分割入力データファイルを出力するディレクトリ名を絶対パス名で指定してます。

指定するディレクトリは,入力データファイルがあるサーバ又はホストでなければなりません。また,指定するディレクトリには,HiRDB管理者に対してアクセス権限を与えておく必要があります。

(3) 注意事項

  1. 分割入力データファイルの名称について
    同じ表格納用RDエリアに定義された複数の表に対して,同じ入力データファイル名でpdloadを複数回実行すると,分割入力データファイルの名称が同じになり,ファイルの内容が保証できなくなります。したがって,「src_work文に指定するディレクトリ名」,又は「入力データファイル名」がユニークな名称となるようにしてください。
  2. LOB列がある表について
    分割入力データファイルの作成は,入力データファイルを分割するだけなので,LOB入力ファイルにはアクセスしません。したがって,LOB列がある表の場合,LOB入力ファイルはpdloadを実行するホストからNFSなどで参照できる場所に配置する必要があります。
  3. 固定長データ形式の入力データファイルのDECIMAL型データの扱い
    DECIMAL型の符号正規化機能を使用している場合,分割入力データファイルに出力するDECIMAL型の値は正規化します。
  4. 該当RDエリアに格納するデータがない場合,0バイトの分割入力データファイルが作成されます。
  5. 分割入力データファイルの出力を行う場合,順序数生成子による自動採番機能は使用できません。

(4) 使用例

(a) 分割入力データファイルを作成してRDエリア単位のデータロードをする例

横分割表(T1)にRDエリア単位にデータロードを並列実行します。このとき,入力データファイル(inputfile)は表単位であるため,RDエリア単位に実行するための分割入力データファイルを作成します。その後,RDエリア単位にデータロードを並列実行します。

1.表定義
 
 CREATE FIX TABLE T1 (C1 DEC,
                      C2 CHAR(10))
                     IN ((RDAREA1) C1 > 1000,(RDAREA2) C1 < -1000,(RDAREA3));
 

 

2.分割入力データファイルの作成

[説明]
  1. 入力データファイル,及びエラー情報ファイルの名称を指定します。
  2. 分割入力データファイルを作成するディレクトリ名を指定します。

 

3.RDエリア単位のデータロードの並列実行
「2.分割入力データファイルの作成」の結果,次の三つの分割入力データファイルが作成されます。
  • /divwork/inputfile_BES1_RDAREA1
  • /divwork/inputfile_BES2_RDAREA2
  • /divwork/inputfile_BES3_RDAREA3
上記のファイルを入力データファイルにして,RDエリア単位にデータロードを並列実行します。
(b) 全列固定長のバイナリ形式の入力データファイルを使用する例

分割入力データファイルを作成する場合,バイナリ形式の入力データファイルは使用できません。ただし,すべての列が固定長のデータ型で構成される表であれば,固定長データ形式として扱うことができます。

注※
次のデータ型です。
INTEGER,SMALLINT,DECIMAL,FLOAT,SMALLFLT,DATE,TIME,INTERVAL YEAR TO DAY,INTERVAL HOUR TO SECOND,CHAR,NCHAR,MCHAR,TIMESTAMP

1.表定義
 
 CREATE FIX TABLE T2 (C1 DEC(7),
                      C2 CHAR(10)) FIX HASH HSAH6 BY C1
                     IN (RDAREA1,RDAREA2);
 

 

2.分割入力データファイルの作成

[説明]
表の構成列C1,C2の並びと,データ型を指定します。

[説明]
  1. 入力データファイル,及びエラー情報ファイルの名称を指定します。
  2. 分割入力データファイルを作成するディレクトリ名を指定します。

 

3.RDエリア単位のデータロードの並列実行
「2.分割入力データファイルの作成」の結果,次の二つの分割入力データファイルが作成されます。
  • /divwork/inputfile_BES1_RDAREA1
  • /divwork/inputfile_BES2FES_RDAREA2
上記のファイルを入力データファイルにして,RDエリア単位にデータロードを並列実行します。