名前
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 ] 入力ファイル名 [{ 入力ファイル名 } ...]
機能説明
入力ファイルのデータを使用して、表に対するデータの追加、更新または削除を行います。
入力ファイルがテキスト形式で、区切り記号がコンマ(,)の場合、CSV形式のファイルで入力できます。
オプション
表へのデータの追加、更新または削除の処理モードを指定します。
指定した表に入力ファイルで指定したデータを追加します。
“r”を指定すると、指定した列の並びと一致する表の行が存在する場合に、その行を追加データで置き換えます。
一致する行がない場合は、そのデータを表に追加します。
列名の並びには、表に定義された一意性制約の列の並びを指定します。
列名の指定を省略した場合は、PRIMARY KEYを指定した一意性制約の列の並びが指定されたものとして処理します。
この場合、表にPRIMARY KEYを指定した一意性制約が定義されていなければなりません。
“r”を指定しない場合、表の一意性制約の列の並びと重複するデータを追加するとエラーとなります。
“r”を指定した場合は、置き換えの対象となる行以外の行について、表の一意性制約の列の並びと重複するデータを追加するとエラーとなります。
入力データの値が指定した列名の並びと一致する行について、表の列を入力データの値によって更新します。
-cオプションで列名を指定している場合、指定されなかった列の値は更新しません。
列名の並びには、表に定義された一意性制約の列の並びを指定します。
列名の指定を省略した場合は、PRIMARY KEYを指定した一意性制約の列の並びが指定されたものとして処理します。
この場合、表にPRIMARY KEYを指定した一意性制約が定義されていなければなりません。
更新対象の行が存在しないような入力データが存在した場合には、エラーとなります。
表のDSIがOBJECT構造の場合は、本オプションを指定することはできません。
入力データの値が指定した列名の並びと一致する行について、表の行を削除します。
列名の並びには、表に定義された一意性制約の列の並びを指定します。
列名の指定を省略した場合は、PRIMARY KEYを指定した一意性制約の列の並びが指定されたものとして処理します。
この場合、表にPRIMARY KEYを指定した一意性制約が定義されていなければなりません。
削除対象の行が存在しないような入力データが存在した場合には、エラーとなります。
追加、更新または削除の対象とする表の表名を指定します。
入力ファイルがテキスト形式の場合に指定します。
本オプションを省略した場合、バイナリ形式となります。
入力データのコード系を指定します。
入力データのコード系は、以下のものが指定できます。
EUC_S90 : EUCコードのS90コード
SJIS : シフトJISコード
UNICODE : UTF8
本オプションを省略した場合は、処理対象のデータベースのコード系が指定されたものとみなします。
なお、本オプションは、入力ファイルのデータがテキスト形式の場合にのみ指定できます。
入力ファイルの全カラムの先頭に、NULL表示用の領域を持たない場合に指定します。
本オプションを省略した場合は、全カラムの先頭にNULL表示用の領域を持つものとして処理されます。
なお、本オプションは、バイナリ形式の場合にのみ指定できます。
入力ファイルがテキスト形式の場合に、列データ間の区切り記号として使用する1文字(区切り文字)を指定します。
区切り文字は、ASCII文字の範囲内( 0x7f以下)で指定します。
ただし、改行文字(\n)と空文字(\0)を区切り文字として指定することはできません。
また、区切り文字としてシステムに特別の意味をもつ文字を指定する場合は、二重引用符(")はエスケープ記号(\)を直前に指定する必要があり、それ以外の文字の場合は二重引用符(")で囲む必要があります。
本オプションを省略した場合、区切り記号としてコンマ(,)を使用するものとして処理します。
なお、テキストデータに含まれる可能性のある文字(たとえば、英数字、プラス(+ )、マイナス(- )、ピリオド(.)など)を区切り文字に指定した場合、テキスト形式データ中にある、これらの文字は区切り文字として扱われますので、指定する場合は注意してください。
以下にテキスト形式ファイル中での区切り文字の扱いを示します。
区切り文字に空白を指定した場合、連続する空白は1つの区切り文字として扱います。
区切り文字に空白を指定した場合、テキスト形式ファイルのデータにNULL値を含めることができなくなりますので注意してください。
空白以外の区切り文字を指定した場合、区切り文字間の空白や、囲み文字の外側と区切り文字の間の空白は読み飛ばされます。
空白以外の区切り文字が連続する場合、それぞれの区切り文字の間にNULL値のデータが1個あるものとして扱います。
行の最後の区切り文字と改行文字の間は1項目として扱います。あるデータ項目以降がすべてNULL値であっても、最後の項目まで区切り文字を指定する必要があります。
文字属性以外の項目データに区切り文字が存在する場合でも囲み文字で囲むことはできません。したがって、浮動小数点型のデータのように、ピリオド(.)や符号(+または-)などを含む数値型データを記述する場合、これらの文字を区切り文字に指定しないようにしてください。
入力ファイルがテキスト形式の場合に、文字列型、各国語文字列型、または日時型のデータの囲み記号の扱いを指定します。
囲み記号で文字列データの前後を囲む場合は、囲み記号として使用する1文字(囲み文字)を指定します。
囲み文字には、二重引用符(")、単一引用符(')のいずれかの1文字を指定します。
ただし、-pオプションで指定した区切り文字と同じ文字を指定することはできません。
囲み記号で文字列データの前後を囲まない場合は、NONE_VALIDSPACEまたはNONEを指定します。
ただし、文字列データ中に、-pオプションで指定した区切り文字を含む場合、または改行記号を含む場合は、必ず囲み記号を指定し、NONE_VALIDSPACEまたはNONEを指定できません。
NONE_VALIDSPACEを指定した場合には、区切り文字から区切り文字までをそのまま格納します。
ただし、-pオプションで区切り文字に空白を指定できません。
NONEを指定した場合には、前後の空白を削除して格納します。
本オプションを省略した場合、囲み文字として二重引用符(")を使用するものとして処理します。
以下にテキスト形式のデータでの囲み文字の扱いを示します。
囲み記号で囲まれた文字列データ内に、囲み記号と同じ文字を使用する場合、連続する囲み文字を2つ指定することにより、1つの文字データとみなします。
囲み記号に二重引用符(")を指定した場合
テキストの指定 :
~ ,"A""BC", ~
データの値 :
A"BC
囲み文字を指定した場合、すべての文字列データは必ず指定した囲み文字で囲む必要があります。
囲み文字の種類と指定形式について以下に示します。
単一引用符(') :
形式1(二重引用符で囲む)
-l "'"
二重引用符(") :
形式1(直前に(\)を付加)
-l \"
入力ファイルがテキスト形式の場合に、1レコード中の最終のデータ項目の後(間に空白があってもよい)に区切り文字がある場合に指定します。
本オプションを省略した場合、1レコード中の最終のデータ項目の後に区切り文字(空白を除く)は指定できません。
入力ファイルのデータの並びを、表のどの列に対応させるかを指定します。
本オプションを省略した場合は、表のすべての列を定義順で指定したのと同じになります。
表へのデータの追加の場合、指定されなかった列に対応するデータは、表定義で定義したDEFAULT句が設定されます。
また、定義されていない場合は、NULL値になります。
なお、格納構造がOBJECTである表に対しては、本オプションを指定することができません。
入力データの各国語文字列型についてのコード系がUCS2のバイトスワップ形式(リトルエンディアン)の場合に指定します。
なお、本オプションは、対象データベースのコード系がUNICODEかつ入力データがバイナリ形式の場合のみ指定できます。
データのファイル名を指定します。
ファイル名は、ルートからの絶対パス名で指定します。
ファイルの形式には、バイナリ形式およびテキスト形式があります。
複数のファイルを指定した場合は、すべてのファイルからデータが入力されます。
ただし、バイナリ形式とテキスト形式のファイルを混在して指定することはできません。
入力ファイル名に指定できる長さは、256バイトまでです。
なお、入力ファイルの形式の詳細については、“RDB運用ガイド”の外部ファイルの形式を参照してください。
使用例
外部ファイルのデータを表に追加します。
ファイルはテキスト形式で、各国語文字列型がUCS2のバイトスワップ形式(リトルエンディアン)とします。
rdbupt -ma -b 在庫管理DB.在庫スキーマ.在庫表 -t -U NCHAR=UCS2B c:\rdb\upt1.txt
外部ファイルのデータを表に追加します。
指定した列の並びと一致する表の行が存在する場合は、その行を追加データで置き換えます。
rdbupt -mar,製品番号 -b 在庫管理DB.在庫スキーマ.在庫表 c:\rdb\upt2.dat
指定した列名の並びと一致する行について、表の列を外部ファイルのデータの値によって更新します。
rdbupt -mu,製品番号 -c 製品番号,棚番号 -b 在庫管理DB.在庫スキーマ.在庫表 c:\rdb\upt3.dat
外部ファイルの値が指定した列名の並びと一致する行について、表の行を削除します。
rdbupt -md, 製品番号 -c 製品番号 -b 在庫管理DB.在庫スキーマ.在庫表 c:\rdb\upt4.dat
終了ステータス
以下の終了ステータスが返されます。
0 : 正常終了
0以外 : 異常終了
注意
本コマンドは、1つのトランザクションからなるアプリケーションと同様に動作します。
本コマンドは、環境変数または動作環境ファイルを指定することにより、アプリケーションと同様のチューニングが可能です。チューニング方法の詳細については、“アプリケーション開発ガイド(共通編)”および“RDB運用ガイド”を参照してください。ただし、一部の環境変数は、本コマンドでは以下の値に固定となります。
環境変数名 | 動作環境ファイルの | 本コマンドの扱い |
---|---|---|
RDBDSI | INCLUSION_DSI | 設定なし |
RDBDSO | DSO_LOCK | 処理対象のDSO名/EX |
RDBRCVL | RCV_MODE | RCVを設定 |
RDBRLOCK | R_LOCK | NOを設定 |
RDBSYDSI | DSI_EXPAND_POINT | 設定あり |
RDBTRAN | TRAN_SPEC | SCを設定 |
入力ファイルにテキスト形式を指定した場合、BLOB属性の列を入力データの対象とすることはできません。
表のDSIの格納構造がOBJECT構造の場合には、入力ファイル内のBLOB属性の列データは有効長の必要があります。
本コマンドを実行する場合、処理対象の実表に対するINSERT権、UPDATE権、DELETE権が必要です。
指定可能な入力ファイルのサイズは、2ギガバイト未満となります。
USER_CONTROLにYESを指定している場合、CREATE USER文のWITH句でOSを指定した利用者のみ実行することができます。
本コマンドの実行時に指定した表のDSIまたは関連するインデックスのDSIがメモリに常駐している場合には、自動容量拡張を行うことができません。DSIの容量が不足しないように監視してください。詳細は“RDB運用ガイド”の“DSIの容量監視”を参照してください。