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

2.65 rdbupt

名前

rdbupt -- データベースの一括更新

形式

rdbupt -m {{a [r [, 列名 [{,列名} ...]]] }
        | { u [ , 列名 [{ ,列名} ...]]}
        | { d [ , 列名 [{ ,列名} ...]]} } 
       -b データベース名.スキーマ名.表名
         [ -t ]
         [ -j { EUC_S90 | SJIS |  UNICODE } ]
         [ -n ]
         [ -p 区切り文字 ]
         [ -l { 囲み文字 | NONE_VALIDSPACE | NONE } ]
         [ -e ]
         [ -c 列名 [{ , 列名 } ...] ]
         [ -U NCHAR=UCS2B ]
        入力ファイル名 [{ 入力ファイル名 } ...]

機能説明

オプション

-m

表へのデータの追加、更新または削除の処理モードを指定します。

a [r [, 列名 [{,列名} ...]]]

指定した表に入力ファイルで指定したデータを追加します。
“r”を指定すると、指定した列の並びと一致する表の行が存在する場合に、その行を追加データで置き換えます。
一致する行がない場合は、そのデータを表に追加します。
列名の並びには、表に定義された一意性制約の列の並びを指定します。
列名の指定を省略した場合は、PRIMARY KEYを指定した一意性制約の列の並びが指定されたものとして処理します。
この場合、表にPRIMARY KEYを指定した一意性制約が定義されていなければなりません。
“r”を指定しない場合、表の一意性制約の列の並びと重複するデータを追加するとエラーとなります。
“r”を指定した場合は、置き換えの対象となる行以外の行について、表の一意性制約の列の並びと重複するデータを追加するとエラーとなります。

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

入力データの値が指定した列名の並びと一致する行について、表の列を入力データの値によって更新します。
-cオプションで列名を指定している場合、指定されなかった列の値は更新しません。
列名の並びには、表に定義された一意性制約の列の並びを指定します。
列名の指定を省略した場合は、PRIMARY KEYを指定した一意性制約の列の並びが指定されたものとして処理します。
この場合、表にPRIMARY KEYを指定した一意性制約が定義されていなければなりません。
更新対象の行が存在しないような入力データが存在した場合には、エラーとなります。
表のDSIがOBJECT構造の場合は、本オプションを指定することはできません。

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

入力データの値が指定した列名の並びと一致する行について、表の行を削除します。
列名の並びには、表に定義された一意性制約の列の並びを指定します。
列名の指定を省略した場合は、PRIMARY KEYを指定した一意性制約の列の並びが指定されたものとして処理します。
この場合、表にPRIMARY KEYを指定した一意性制約が定義されていなければなりません。
削除対象の行が存在しないような入力データが存在した場合には、エラーとなります。

-b データベース名.スキーマ名.表名

追加、更新または削除の対象とする表の表名を指定します。

-t

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

-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}

入力ファイルがテキスト形式の場合に、文字列型、各国語文字列型、または日時型のデータの囲み記号の扱いを指定します。
囲み記号で文字列データの前後を囲む場合は、囲み記号として使用する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 列名 [{,列名} ...]

入力ファイルのデータの並びを、表のどの列に対応させるかを指定します。
本オプションを省略した場合は、表のすべての列を定義順で指定したのと同じになります。
表へのデータの追加の場合、指定されなかった列に対応するデータは、表定義で定義したDEFAULT句が設定されます。
また、定義されていない場合は、NULL値になります。
なお、格納構造がOBJECTである表に対しては、本オプションを指定することができません。

-U NCHAR=UCS2B

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

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

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

使用例

例1

外部ファイルのデータを表に追加します。
ファイルはテキスト形式で、各国語文字列型がUCS2のバイトスワップ形式(リトルエンディアン)とします。

rdbupt -ma -b 在庫管理DB.在庫スキーマ.在庫表 -t
       -U NCHAR=UCS2B
       c:\rdb\upt1.txt
例2

外部ファイルのデータを表に追加します。
指定した列の並びと一致する表の行が存在する場合は、その行を追加データで置き換えます。

rdbupt -mar,製品番号  -b 在庫管理DB.在庫スキーマ.在庫表 
       c:\rdb\upt2.dat
例3

指定した列名の並びと一致する行について、表の列を外部ファイルのデータの値によって更新します。

rdbupt -mu,製品番号 -c 製品番号,棚番号
       -b 在庫管理DB.在庫スキーマ.在庫表 c:\rdb\upt3.dat
例4

外部ファイルの値が指定した列名の並びと一致する行について、表の行を削除します。

rdbupt -md, 製品番号 -c 製品番号 
       -b 在庫管理DB.在庫スキーマ.在庫表
       c:\rdb\upt4.dat

終了ステータス

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

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

注意