名前
rdbunl -- データベースのデータのファイルへの出力
形式
rdbunl -i データベース名.表のDSI名 [ { -t | -o } ] [ -j { EUC_S90 | SJIS | UNICODE } ] [ -n ] [ -c 列名 [{,列名} ...] ] [ -d ] [ -U NCHAR=UCS2B ] [ -e ] { -f 条件指定ファイル名 | -v 分割指定ファイル名 | 出力ファイル名 }
機能説明
表のDSIのデータをファイルに出力します。
出力ファイルがテキスト形式で、区切り記号がコンマ(,)の場合、CSV形式のファイルで出力できます。
オプション
データをファイルに出力する表のDSI名を指定します。
出力ファイルのデータをテキスト形式で出力する場合に指定します。
本オプションを省略した場合は、バイナリ形式で出力します。
出力ファイルのデータを可変長バイナリ形式で有効長だけを出力する場合に指定します。本オプションを省略した場合、可変長列の定義長分が出力されます。
出力データのコード系を指定します。
出力データのコード系は、以下のものが指定できます。
EUC_S90 : EUCコードのS90コード
SJIS : シフトJISコード
UNICODE : UTF8
本オプションを省略した場合は、処理対象のデータベースのコード系が指定されたものとみなします。
なお、本オプションは、出力ファイルのデータがテキスト形式の場合にのみ指定できます。
すべてのカラムの先頭に、NULL表示用の領域を付加しないで出力します。
この場合、データにNULL値を含む行は出力されません。
本オプションを省略すると、すべてのカラムの先頭にNULL表示用の領域を付加します。
この場合、データにNULL値を含む行は出力の対象となります。
データにNULL値を含む行を出力しない場合に指定します。
本オプションを省略すると、データにNULL値を含む行は出力の対象となります。
処理対象の表を構成する列の中から、任意の列を選択し、その列で構成するデータを出力ファイルに出力する場合に指定します。
列名の順序は任意です。
ただし、同じ列名を2回以上指定することはできません。
本オプションを省略した場合、表のすべての列が定義順に指定されたのと同じになります。
なお、格納構造がOBJECTである表のDSIに対しては、本オプションを指定することはできません。
出力先ファイルのディスクを切り替える場合に指定します。
要求メッセージに従って、続行の指示(“y”または“q”)を標準入力します。
「出力ファイル名.3桁の通番」のファイルが作成されます。
(通番は001~) 続行の指示入力において、以下の入力誤りの場合は再試行が可能です。
ディスクが用意されていない
同名のファイルがすでに存在する
ファイルが作成できない(権限なしなど)
ただし、以下の場合はエラーになりません。
ディレクトリ名が存在しない(ディレクトリが自動作成されます)
続行の指示の入力において、以下の場合は再入力が要求されます。
空Enter(または“y”、“q”以外)
なお、本オプションは、“-v”と“-f”オプションと同時に指定することはできません。
各国語文字列型のコードをUCS2のバイトスワップ形式(リトルエンディアン)で出力したい場合に指定します。
なお、本オプションは、対象データベースのコード系がUNICODEかつ出力データがバイナリ形式の場合のみ指定できます。
-iオプションで指定した表のDSIに対してアクセス禁止状態が設定されていても強制的にデータを出力する場合に指定します。
表のDSIにアクセス禁止状態が設定されていない場合には指定できません。
表のDSIにアクセス禁止状態が設定されている場合に本オプションを省略すると、エラーとなります。
ある条件によりデータを検出して、この単位でファイルに出力する場合に指定します。
ファイル名は絶対パス名で指定します。
ここで指定するファイルには、データを抽出するための条件と、抽出したデータの出力先のファイル名を記述しておきます。
また、データを抽出するための条件は複数個指定することができ、それぞれのデータを別々のファイルに出力できます。
条件指定ファイル名に指定できる長さは、256バイトまでです。
以下に、データを分割する条件と、データの出力先の記述形式を説明します。
# コメント WHERE (列名[{,列名}…]) = (?[{,?}…]) {USING (定数[{,定数}…]) TO 出力ファイル名}…
# コメント WHERE (列名[{,列名}…]) BETWEEN (?[{,?}…]) AND (?[{,?}…]) {USING (定数[{,定数}…],定数[{,定数…]) TO 出力ファイル名}…
それぞれの形式について、出力ファイルへの出力対象となるデータを以下に示します。
# コメント WHEREの指定:(C1,C2, …,Cn) = (?,?,…,?) USINGの指定:(V1,V2, …,Vn) 出力データ :以下の条件式の結果が真になる行の集まりが、出力ファイル名で指定されたファイルに出力されます。 条件式 :C1 = V1 AND C2 = V2 AND … AND Cn = Vn
# コメント WHEREの指定:(C1,C2, …,Cn)BETWEEN (?,?,…,?) AND (?,?,…,?) USINGの指定:(V11,V12, …,V1n,V21,V22, …,V2n) (1) (2) 出力データ :以下の条件式の結果が真になる行の集まりが、出力ファイル名で指定されたファイルに出力されます。 条件式 : ( (1) (C1 > V11) (1) OR (1) (C1 = V11 AND C2 > V12) (1) OR (1) (C1 = V11 AND C2 = V12 AND C3 > V13) (1) : (1) (C1 = V11 AND C2 = V12 AND C3 = V13 AND … AND Cn >= V1n) (1) ) (1) AND ( (2) (C1 < V21) (2) OR (2) (C1 = V21 AND C2 < V22) (2) OR (2) (C1 = V21 AND C2 < V22 AND C3 < V23) (2) : (2) (C1 = V21 AND C2 = V22 AND C3 = V23 AND … AND Cn <= V2n) (2) ) (2)
先頭に“#”がある行は、注釈行として読みとばされます。このとき、“#”は必ず行の先頭に記述する必要があります。
USING以降を複数指定することにより、複数の抽出条件に対し、それぞれ別々の出力ファイルに出力することができます。 USINGの指定は32個まで指定できます。なお、異なるUSINGの指定に対し、同一の出力ファイル名を指定することはできません。
USING指定に対し、それらの条件に合致するデータがない場合、対応する出力ファイル名で指定されたファイルが0バイトの大きさで作成されます。なお、出力ファイルの作成において、1つでも出力に失敗した場合、すべての出力ファイルが作成されません。
WHEREで指定可能な列名の数は、64個までです。列名の数と“?”の個数は同じであることが必要です。
WHEREで指定する列には、NOT NULLが指定されていることが必要です。
WHEREで指定可能な列のデータ型は、以下のとおりです。
列の属性 | 精度 | 位取り | 長さ | 備考 |
---|---|---|---|---|
SMALLINT | - | - | - | - |
INTEGER | - | - | - | - |
NUMERIC(p,q) | 1 | 0 | - | - |
DECIMAL(p,q) | 1 | 0 | - | - |
CHARACTER(n) | - | - | 1 | 可変長 |
NATIONALCHARACTER(n) | - | - | 1 | 可変長 |
TIMESTAMP | - | - | - | - |
DATE | - | - | - | - |
TIME | - | - | - | - |
INTERVAL | - | - | - | - |
注)分割条件に指定する場合は、1~254で指定します。
USINGで指定する定数はSQL文で記述する形式と同じです。ただし、時間隔定数については、以下の記述形式で指定します。
INTERVAL [<符号>]<時間隔列>
異なるUSINGの指定に対し、出力結果が重複するような分割値を指定することはできません。
データの出力先の記述形式が“形式-2”の場合に、条件に複数個の列を指定した例として、以下の条件指定について説明します。
WHERE (製品番号,在庫数量) BETWEEN (?,?) AND (?,?) USING ( 100,1, 199,10 ) TO 対象ファイル (1) (2)
この場合、条件式は以下の形で評価されます。
( (1) (製品番号 > 100) (1) OR (1) (製品番号 = 100 AND 在庫数量 >= 1) (1) ) (1) AND ( (2) (製品番号 < 199) (2) OR (2) (製品番号 = 199 AND 在庫数量 <= 10) (2) ) (2)
したがって、たとえば(150,20)などの場合も条件に合致することになります。
以下の評価とはならないので、注意してください。
100 <= 製品番号 <= 199 AND 1 <= 在庫数量 <= 10
任意の行数単位にデータを別々のファイルに分割して出力する場合に指定します。
ファイル名は絶対パス名で指定します。
ここで指定するファイルには、分割するデータの行数と、分割したデータの出力先のファイル名を記述しておきます。
分割指定ファイル名に指定できる長さは、256バイトまでです。
以下にデータを分割する指示と、データの出力先の記述形式を説明します。
# コメント {COUNT 行数 TO 出力ファイル名}… COUNT - TO 出力ファイル名
先頭に“#”がある行は、注釈行として読みとばされます。このとき、“#”は必ず行の先頭に記述する必要があります。
COUNTに行数を指定することにより、指定した行数分のデータを出力ファイルに出力します。また、行数を指定したCOUNTを複数指定することにより、指定した行数分のデータをそれぞれ別々の出力ファイルに出力することができます。なお“-”を指定したデータCOUNTを1個だけ必ず指定する必要があります。 DSIの格納データ数が、COUNTで指定した行数の合計を超えた場合、残りのデータは“-”を指定したCOUNTに指定した出力ファイルに出力されます。
COUNTの指定は32個まで指定できます。なお、異なるCOUNTの指定に対し、同一の出力ファイル名を指定することはできません。
COUNTの指定に対し、抽出するデータが対応する行数に満たない場合は、その行数分だけのデータを出力ファイルに出力します。また、抽出するデータが1件もない場合、対応する出力ファイル名で指定されたファイルが0バイトの大きさで作成されます。なお、出力ファイルの作成において、1つでも出力に失敗した場合、すべての出力ファイルが作成されません。
COUNTの行数は1以上の数字で指定します。
データを出力するファイルの、ファイル名を指定します。
ファイル名は絶対パス名で指定します。
この場合、出力対象のすべてのデータが、出力ファイル名で指定したファイルに出力されます。
出力ファイル名に指定できる長さは、256バイトまでです。
なお、出力ファイルの形式の詳細については、“RDB運用ガイド”の外部ファイルの形式を参照してください。
使用例
在庫管理DBに属する在庫表DSIのデータをc:\rdb\data上のファイル名unl1.datにバイナリ形式で出力します。
各国語文字列型のデータをUCS2のバイトスワップ形式(リトルエンディアン)で出力します。
rdbunl -i 在庫管理DB.在庫表DSI -U NCHAR=UCS2B c:\rdb\data\unl1.dat
任意の列を選択し、この列で構成するデータをc:\rdb\data上のファイル名unl2.txtにテキスト形式で出力します。
rdbunl -i 在庫管理DB.在庫表DSI -t -c 倉庫番号,製品名 c:\rdb\data\unl2.txt
在庫管理DBに属する在庫表DSIのデータを条件指定ファイルに指定した条件ごとに別々のファイルに分割して出力します。
rdbunl -i 在庫管理DB.在庫表DSI -t -f c:\rdb\data\term.txt
WHERE (製品番号) BETWEEN (?) AND (?) USING (100,119) TO c:\rdb\data\term100.txt USING (120,199) TO c:\rdb\data\term120.txt USING (200,299) TO c:\rdb\data\term200.txt
在庫管理DBに属する在庫表DSIのデータを分割指定ファイルに指定した行数単位に別々のファイルに分割して出力します。
rdbunl -i 在庫管理DB.在庫表DSI -t -v c:\rdb\data\part.txt
COUNT 10 TO c:\rdb\data\part1.txt COUNT 20 TO c:\rdb\data\part2.txt COUNT - TO c:\rdb\data\part3.txt
終了ステータス
以下の終了ステータスが返されます。
0 : 正常終了
0以外 : 異常終了
注意
出力ファイルには、出力対象の行を並べて出力します。行の出力順序に規則はありません。
各行のデータは、-cオプションで指定した列の順に、それぞれの列のデータを出力します。 -cオプションを省略した場合は、表に含まれる列の定義順に、すべての列のデータを出力します。
バイナリ形式の出力ファイルの内容を以下に説明します。
-nオプションを指定しない場合、それぞれの列データの先頭にNULL表示を出力します。NULL表示は2バイトの符号付き2進数の領域です。表の列の値がNULL値の場合、-1(16進でffff)を設定します。そうでない場合には、0(16進で0000)を設定します。
-nオプションを指定した場合、NULL値を含む行のデータは出力されません。
表のDSIの格納構造がOBJECT構造の場合には、出力ファイル内のBLOB属性の列データは有効長だけ出力されます。
テキスト形式の出力ファイルの内容を以下に説明します。
データ項目がNULL値の場合は、そのデータ項目に対応する値は設定されません。すなわち、行の先頭のデータ項目がNULL値の場合は、行の先頭にはコンマ(,)が出力されます。行の途中のデータ項目がNULL値の場合は、コンマ(,)が連続して出力されます。行の最後のデータ項目がNULL値の場合は、コンマ(,)の直後に改行文字が出力されます。なお、出力対象の列が1個だけかつNULL値の場合には、行の先頭に改行文字が出力されます。なお、NULL値のデータ項目を含む行は、-nオプションを指定した場合は出力されません。
表のDSIの格納構造がOBJECT構造の場合には、テキスト形式は指定できません。
出力ファイルは本コマンド実行者の許可モードを持つファイルが作成されます。
OBJECT型の表のDSIに対して、本コマンドを実行すると、処理DSIに対してすでに共用バッファプールが割り当てられていれば、rdbunlコマンドはこれを使用します。共用バッファプールが割り当てられていない場合は、システムが自動的に割り当てて、これを使用します。
本コマンドを実行する場合、処理対象のDSIが所属する実表に対するSELECT権が必要です。
必要な権限を含むロールを付与されている利用者が、本コマンドを実行したい場合は、セキュリティ形態パラメタのROLE_RANGEパラメタの設定が必要です。ROLE_RANGEパラメタの詳細については、“SQLリファレンス”の“SET SYSTEM PARAMETER文”を参照してください。
-eオプションで強制的にデータを出力した場合、レコードが不足したり不整合なデータが含まれている可能性があります。データの内容を必ず確認してください。