ページの先頭行へ戻る
Symfoware Server V10.0.0 コマンドリファレンス

2.57 rdbsuloader

名前

rdbsuloader -- DSIの一括更新

形式

rdbsuloader -m {{ar [, 列名 [{,列名} ...]] }
           | { u [ , 列名 [{ ,列名 } ...]]}
           | { d [ , 列名 [{ ,列名 } ...]]}
           | { c [ , 列名 [{ ,列名 } ...]]} }
           -i データベース名.表のDSI名
            [ -h ]
            [ {  -f インデックスのページ内未使用率 
            [ ,インデックスのDSI名]} ... ]
            [ { -s [ DSI名,]  作業用ディレクトリパス名} ...]
            [ { -t |  -o } ]
            [ -j { EUC_S90 | SJIS | UNICODE } ]
            [ -n ]
            [ -p 区切り文字 ]
            [ -l { 囲み文字 | NONE_VALIDSPACE | NONE} ]
            [ -e ]
            [ -c 列名[{ ,列名 } ...] ]
            [ -r { エラー件数 |  ALL } ,エラーデータ出力ファイル名]
            [ { -w { f | d } ,作業用ディレクトリパス名 } ... ]
            [ -U NCHAR=UCS2B ]
            [ -E OUTER_SPLIT_VALUE ]
            入力ファイル名 [{ 入力ファイル名} ... ]

機能説明

オプション

-m

DSIへのデータの置換、更新、削除またはこれらの混在の処理モードを指定します。

ar [, 列名 [{,列名} ...]]

表のDSIに、入力ファイルで指定したデータを置換または追加します。
列名の並びに指定した列に関して、値が一致するデータが表に存在した場合に、表の行を入力データで置換します。
一致するデータが表に存在しない場合は、入力データを表に追加します。
列名の並びを省略した場合は、PRIMARY KEYが指定されたものとして処理します。
また、列名の並びを省略し、PRIMARY KEYが定義されていない場合は、エラーとなります。

u [, 列名 [{,列名} ...]]

列名の並びで指定した列に対して、表と入力データの値が一致する行について、表の行を入力データの値によって更新します。
列名の並びで指定した列に対して、表に一致する行のない入力データは無視されます。
列名の並びを省略した場合は、PRIMARY KEYが指定されたものとして処理します。
また、列名の並びを省略し、PRIMARY KEYが定義されていない場合は、エラーとなります。
なお、-cオプションで列名を指定している場合、更新対象になる行の中で、-cオプションに指定されなかった列の値は変化しません。

d [, 列名 [{,列名} ...]]

列名の並びで指定した列に対して、表と入力データの値が一致する行について、表の行を削除します。
列名の並びで指定した列に対して、表に一致する行のない入力データは無視されます。
列名の並びを省略した場合は、PRIMARY KEYが指定されたものとして処理します。
また、列名の並びを省略し、PRIMARY KEYが定義されていない場合は、エラーとなります。

c [,列名 [{,列名} ...]]

データの置換、更新および削除を入力ファイルのレコードごとに指定することができます。
列名の並びを省略した場合は、PRIMARY KEYが指定されたものとして処理します。
また、列名の並びを省略し、PRIMARY KEYが定義されていない場合は、エラーとなります。

-i データベース名.表のDSI名

置換、更新または削除の対象とする表のDSI名を指定します。
なお、表のDSI名には、SEQUENTIAL構造のDSIのみ指定できます。

-h

表のDSIにインデックスが定義されている場合、DSIの創成を高速に処理したいときに指定します。
本オプションを指定した場合は、本オプションの省略時よりも作業用領域を多く必要とします。
作業用領域の見積りについては、-sオプションを参照してください。

-f インデックスのページ内未使用率[,インデックスのDSI名]

インデックスのページ内未使用率を百分率で指定します。
0から99までの値が指定できます。
本オプションは、表のDSIに定義しているインデックス単位に複数指定することができます。
インデックスのDSI名を省略した場合、インデックスのページ内未使用率は、すべてのインデックスに適用されます。
また、本オプションを省略した場合、インデックスのページ内未使用率は0となります。
表のDSIに、IXDSI1、IXDSI2、IXDSI3の3個のインデックスのDSIが定義されてる場合の -fオプションの指定例と各インデックスの未使用率について以下に示します。

-fオプションの指定例

IXDSI1

IXDSI2

IXDSI3

1)

-fオプションの指定なし

0

0

0

2)

-f 10,IXDSI1
-f 20,IXDSI2
-f 30,IXDSI3

10

20

30

3)

-f 10,IXDSI2

0

10

0

4)

-f 10,IXDSI2 -f 20

20

10

20

5)

-f 10

10

10

10

以下のような指定は、エラーとなります。

6)-f 10 -f 20 : 構文エラー
7)-f 20,IXDSI4 : 意味エラー

-s [DSI名,] 作業用ディレクトリパス名

本コマンドが、インデックス作成時に利用する作業用領域のディレクトリパス名を絶対パス名で指定します。
省略すると、Symfoware/RDBがインストールされているディレクトリ\TMP(たとえば、C:\SFWSV\RDB\TMP)が使用されます。
なお、作業用ディレクトリパス名に指定できる長さは、228バイトまでです。
作業用領域として必要な容量の見積りを以下に示します。

  • -hオプションを指定しない場合

    作業用領域 = Size1
    Size1 : すべてのインデックスのDSIのソート作業域のうち最大のもののサイズ

  • -hオプションを指定する場合

    作業用領域 = Size2
    Size2 : すべてのインデックスのDSIのソート作業域の合計サイズ

インデックスのDSIのソート作業域のサイズの見積りを以下に示します。
これらは、上記のSize1およびSize2の算出に使用します。

  • インデックスがBTREE構造の場合

    ソート作業域のサイズ = (Size3 * 2 + 26) * レコード件数
    Size3 : インデックスを構成する列の長さの合計

  • インデックスがXML構造の場合

    ソート作業域のサイズ = (Size3 * 2 + 36) * 検索対象となる要素・属性の数
    Size3 : インデックスに定義されている検索パスの長さの最大

上記のうちSize3において、さらに以下の見積りが必要です。

  • 列のデータ型がCHARACTER(VARYING含む)、もしくはNATIONAL CHARACTER(VARYING含む)のとき、その列の長さを1.5倍にします。

-t

入力ファイルがテキスト形式の場合に指定します。
本オプションを省略した場合は、バイナリ形式となります。

-o

入力ファイルが可変長バイナリ形式である場合に指定します。
可変長バイナリ形式とは、可変長属性の列に対するデータが、その有効長分だけで表現されている形式です。
本オプションを省略した場合は、可変長属性の列に対するデータが、定義長分で表現されている形式とみなされます。

-j { EUC_S90 | SJIS | UNICODE }

入力データのコード系を指定します。
入力データのコード系は、以下のものが指定できます。
EUC_S90 : EUCコードのS90コード
SJIS : シフトJISコード
UNICODE : UTF8
本オプションを省略した場合は、処理対象のデータベースのコード系が指定されたものとみなします。
なお、本オプションは、入力ファイルのデータがテキスト形式の場合にのみ指定できます。

-n

入力ファイルの全カラムの先頭に、NULL表示用の領域を持たない場合に指定します。
本オプションを省略した場合は、全カラムの先頭にNULL表示用の領域を持つものとして処理されます。
なお、本オプションは、バイナリ形式の場合にのみ指定できます。

-p 区切り文字

入力ファイルがテキスト形式の場合に、列データ間の区切り記号として使用する1文字(区切り文字)を指定します。
区切り文字は、ASCII文字の範囲内( 0x7f以下)で指定します。
ただし、改行文字(\n)と空文字(\0)を区切り文字として指定することはできません。
また、区切り文字としてシステムに特別の意味をもつ文字を指定する場合は、二重引用符(")はエスケープ記号(\)を直前に指定する必要があり、それ以外の文字の場合は二重引用符(")で囲む必要があります。
本オプションを省略した場合は、区切り記号としてコンマ(,)を使用するものとして処理します。
なお、テキスト形式のデータに含まれる可能性のある文字(たとえば、英数字、プラス(+)、マイナス(-)、ピリオド(.)など)を区切り文字に指定した場合、テキスト形式のデータにある、これらの文字は区切り文字として扱われますので、指定する場合は注意してください。
以下にテキスト形式のデータでの区切り文字の扱いを示します。

  • 区切り文字に空白を指定した場合、連続する空白は1つの区切り文字として扱います。

  • 区切り文字に空白を指定した場合、テキスト形式のデータにNULL値を含めることができなくなりますので注意してください。

  • 空白以外の区切り文字を指定した場合、区切り文字間の空白や、囲み文字の外側と区切り文字の間の空白は読み飛ばされます。

  • 空白以外の区切り文字が連続する場合、それぞれの区切り文字の間にNULL値のデータが1個あるものとして扱います。

  • 行の最後の区切り文字と改行文字の間は1項目として扱います。あるデータ項目以降がすべてNULL値であっても、最後の項目まで区切り文字を指定する必要があります。

  • 文字属性以外の項目データに区切り文字が存在する場合でも囲み文字で囲むことはできません。したがって、浮動小数点型のデータのように、ピリオド(.)や符号(+または-)などを含む数値型データを記述する場合、これらの文字を区切り文字に指定しないようにしてください。

-l {囲み文字 | NONE_VALIDSPACE | NONE}

入力ファイルがテキスト形式の場合に、文字列型、各国語文字列型、日時型またはBLOB型のデータの囲み記号の扱いを指定します。
囲み記号で文字列データの前後を囲む場合は、囲み記号として使用する1文字(囲み文字)を指定します。
囲み文字には、二重引用符(")、単一引用符(')のいずれかの1文字を指定します。
ただし、-pオプションで指定した区切り文字と同じ文字を指定することはできません。
囲み記号で文字列データの前後を囲まない場合は、NONE_VALIDSPACEまたはNONEを指定します。
ただし、文字列データ中に、-pオプションで指定した区切り文字を含む場合、または改行記号を含む場合は、必ず囲み記号を指定し、NONE_VALIDSPACEまたはNONEを指定できません。
NONE_VALIDSPACEを指定した場合には、区切り文字から区切り文字までをそのまま格納します。
ただし、-pオプションで区切り文字に空白を指定できません。
NONEを指定した場合には、前後の空白を削除して格納します。
本オプションを省略した場合、囲み文字として二重引用符(")を使用するものとして処理します。
以下にテキスト形式のデータでの囲み文字の扱いを示します。

  • 囲み記号で囲まれた文字列データ内に、囲み記号と同じ文字を使用する場合、連続する囲み文字を2つ指定することにより、1つの文字データとみなします。

囲み記号に二重引用符(")を指定した場合
テキストの指定 :
~ ,"A""BC", ~
データの値 :
A"BC

  • 囲み文字を指定した場合、すべての文字列データは必ず指定した囲み文字で囲む必要があります。

  • 囲み文字の種類と指定形式について以下に示します。

    単一引用符(') :
    形式1(二重引用符で囲む)
    -l "'"
    二重引用符(") :
    形式1(直前に(\)を付加)
    -l \"

-e

入力ファイルがテキスト形式の場合に、1レコード中の最終のデータ項目の後(間に空白があってもよい)に区切り文字がある場合に指定します。
本オプションを省略した場合は、1レコード中の最終のデータ項目の後に区切り文字(空白を除く)は指定できません。

-c 列名 [{,列名} ...]

入力ファイルのデータの並びを、表の列名で指定します。
本オプションを省略した場合は、表定義の列名の並び順となります。

  • データの置換(-marオプション) の場合、指定されなかった列に対応するデータは表定義で定義したDEFAULT句の値になります。 DEFAULT句を定義していない場合には、NULL値になります。 DEFAULT句を定義せず、NOT NULLを定義している列は、省略することができません。なお、置換対象の行を特定するキーを構成する列は本オプションの列名の並びに含む必要があります。

  • データの更新(-muオプション)の場合、指定されなかった列の値は更新されません。更新対象の行を特定するキーを構成する列は、 -cオプションの列名の並びに含む必要があります。

  • データの削除(-mdオプション)の場合、削除対象の行を特定するキーを構成する列は、-cオプションの列名の並びに指定する必要があります。それ以外の列が指定されても、行を特定するためには使用されず無視されます。

  • 置換、更新または削除を入力ファイルの各レコードで指定する(-mcオプション)場合、処理対象の行を特定するキーを構成する列は、-cオプションの並びに含む必要があります。また、DEFAULT句を定義せず、NOT NULLを定義している列は省略することができません。指定されなかった列に対応するデータの扱いは、データの置換および更新と同じです。

-r {エラー件数 | ALL},エラーデータ出力ファイル名

表のDSIのデータ処理中にカラム属性エラーが発生した場合、コマンド処理を中断するまでの発生エラー件数の限界値を指定します。
エラー件数に指定した件数に達するまでカラム属性エラーが発生しても、カラム属性エラーを含んだレコードを処理の対象としないで処理を続行します。
エラー件数には1以上の数値を指定し、エラーデータ出力ファイル名は絶対パス名で指定します。
エラーデータ出力ファイル名に指定できる長さは、256バイトまでです。
エラーデータ出力ファイルには、カラム属性エラーを検出したすべてのレコードが、入力ファイルに指定した内容で出力されます。
エラー件数にキーワード“ALL”を指定すると、入力ファイル中でカラム属性エラーを検出しても入力データの最後まで処理を続行し、エラーを検出したすべてのレコードがエラーデータ出力ファイルに出力されます。
本オプションを省略した場合は、入力ファイル中に1件でもカラム属性エラーを含む誤りのファイルを検出した場合、コマンド処理を中断します。
分割値範囲外データをエラー対象に含める場合には-Eオプションを指定してください。-Eオプションを省略した場合、本オプションを指定しても処理対象のDSIの分割値の範囲外であるデータは読みとばされ、エラーデータ出力ファイルには出力されません。
コマンドが異常終了した場合は、エラーデータ出力ファイルは削除されます。
一意性制約違反のデータは対象となりません。

-w {f|d},作業ディレクトリパス名

入力ファイルおよび表のDSIのデータを処理するための作業域を絶対パス名で指定します。
-wfオプション指定により、入力ファイルのデータで使用する作業域を、-wdオプション指定により表のDSIのデータで使用する作業域を指定します。
省略すると、Symfoware/RDBがインストールされているディレクトリ\TMP(たとえば、C:\SFWSV\RDB\TMP)が使用されます。
なお、作業用ディレクトリパス名に指定できる長さは、228バイトまでです。
作業用領域として必要な容量の見積りを以下に示します。
  作業用領域の合計サイズ = Size1 + Size2
  Size1 : 入力データで使用する作業域サイズ
  Size2 : DSIのデータで使用する作業域サイズ

入力データで使用する作業域サイズの見積りを以下に示します。
これらは、上記のSize1の算出に使用します。
  入力データで使用する作業域サイズ = (Size3×2 + 16 + Size4) ×入力レコード件数
  Size3 : -mオプションで指定した列の長さの合計サイズ
  Size4 : 表を構成する列の長さの合計サイズ

DSIのデータで使用するサイズの見積りを以下に示します。
これらは、上記のSize2の算出に使用します。
  DSIのデータで使用する作業域サイズ = (Size5×2 + 16 + Size6) ×DSI内レコード件数
  Size5 : -mオプションで指定した列の長さの合計サイズ
  Size6 : 表を構成する列の長さの合計サイズ

-U NCHAR=UCS2B

入力データの各国語文字列型についてのコード系がUCS2のバイトスワップ形式(リトルエンディアン)の場合に指定します。
なお、本オプションは、対象データベースのコード系がUNICODEかつ入力データがバイナリ形式の場合のみ指定できます。

-E OUTER_SPLIT_VALUE

分割格納が定義された表のDSIを処理するとき、入力ファイルにDSIの分割値の範囲外であるデータが存在した場合、異常データとして扱います。本指定を省略した場合は、そのデータを処理の対象外として処理を続行します。
本指定は、-marオプションまたは-mcオプションによりデータの置換または追加を指定している場合に有効となります。その他の場合は無視します。
本指定を省略した場合は以下の動作となります。

  • -marオプションを指定してDSIの既存のデータを置換または-muオプションを指定してDSIの既存のデータを更新した結果、そのデータが分割格納の範囲外になる場合、本コマンドは異常終了します。

  • -marオプションを指定してDSIに新たに追加するデータが分割格納の範囲外である場合、そのデータを処理の対象外として処理を続行します。

本機能はコマンド実行時の環境変数での指定もできます。
環境変数での指定の詳細については、“RDB運用ガイド”の“初期創成のためのコマンド”を参照してください。

入力ファイル名 [{入力ファイル名} ...]

入力するデータのファイル名を指定します。
ファイル名は、絶対パス名で指定します。
入力ファイルの形式には、バイナリ形式およびテキスト形式があります。
複数のファイルを指定した場合は、すべてのファイルからデータが入力されます。
ただし、バイナリ形式とテキスト形式のファイルを混在して指定することはできません。
入力ファイル名に指定できる長さは、256バイトまでです。
なお、入力ファイルの形式の詳細については、“RDB運用ガイド”の“外部ファイルの形式”を参照してください。

使用例

例1

在庫管理DBに属する在庫表DSIのデータを置換します。
入力ファイル名は、“c:\rdb\data\suloader.dat”とします。
ファイルはバイナリ形式で、各国語文字列型がUCS2のバイトスワップ形式(リトルエンディアン)とします。

rdbsuloader -mar -i 在庫管理DB.在庫表DSI
           -f 20,在庫表インデックスDSI -f 10
           -s c:\rdb\work -w f,c:\rdb2 -w d,c:\rdb4 
           -U NCHAR=UCS2B
           c:\rdb\data\suloader.dat
例2

倉庫番号と製品名のみデータを更新します。
正常な入力レコードのみを更新し、属性エラーを検出した誤りのレコードを“c:\rdb\data\rr.txt”に出力します。
入力ファイル名は、“c:\rdb\data\suloader.txt”とします。
ファイルのデータは、テキスト形式とします。

rdbsuloader -mu,倉庫番号,製品名 
           -i  在庫管理DB.在庫表DSI
           -s c:\rdb\work -t -r 10,c:\rdb\data\rr.txt
           -c 倉庫番号,製品名
           -w f,c:\rdb -w d,c:\rdb4 c:\rdb\data\suloader.txt
例3

在庫管理DBに属する在庫表DSIのデータを削除します。

rdbsuloader -md -i 在庫管理DB.在庫表DSI
           -t -w f,c:\rdb -w d,c:\rdb4 c:\rdb\data\suloader.txt
例4

在庫管理DBに属する在庫表DSIのデータを更新します。

rdbsuloader -mc -i 在庫管理DB.在庫表DSI
           -t -w f,c:\rdb -w d,c:\rdb4 c:\rdb\data\suloader.txt

終了ステータス

以下の終了ステータスが返されます。

0 : 正常終了
0以外 : 異常終了

注意