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

2.60 rdbunl

名前

rdbunl -- データベースのデータのファイルへの出力

形式

rdbunl  -i データベース名.表のDSI名
       [ {  -t |  -o } ]
       [ -j { EUC_S90 | SJIS |  UNICODE } ]
       [ -n ]
       [ -c 列名 [{,列名} ...] ]
       [ -d ]
       [ -U NCHAR=UCS2B ]
       [ -e ]
       { -f 条件指定ファイル名
       | -v 分割指定ファイル名
       | 出力ファイル名 }

機能説明

オプション

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

データをファイルに出力する表のDSI名を指定します。

-t

出力ファイルのデータをテキスト形式で出力する場合に指定します。
本オプションを省略した場合は、バイナリ形式で出力します。

-o

出力ファイルのデータを可変長バイナリ形式で有効長だけを出力する場合に指定します。本オプションを省略した場合、可変長列の定義長分が出力されます。

-j { EUC_S90 | SJIS | UNICODE }

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

-n
[バイナリ形式で出力する場合]

すべてのカラムの先頭に、NULL表示用の領域を付加しないで出力します。
この場合、データにNULL値を含む行は出力されません。
本オプションを省略すると、すべてのカラムの先頭にNULL表示用の領域を付加します。
この場合、データにNULL値を含む行は出力の対象となります。

[テキスト形式で出力する場合]

データにNULL値を含む行を出力しない場合に指定します。
本オプションを省略すると、データにNULL値を含む行は出力の対象となります。

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

処理対象の表を構成する列の中から、任意の列を選択し、その列で構成するデータを出力ファイルに出力する場合に指定します。
列名の順序は任意です。
ただし、同じ列名を2回以上指定することはできません。
本オプションを省略した場合、表のすべての列が定義順に指定されたのと同じになります。

なお、格納構造がOBJECTである表のDSIに対しては、本オプションを指定することはできません。

-d

出力先ファイルのディスクを切り替える場合に指定します。
要求メッセージに従って、続行の指示(“y”または“q”)を標準入力します。
「出力ファイル名.3桁の通番」のファイルが作成されます。
(通番は001~) 続行の指示入力において、以下の入力誤りの場合は再試行が可能です。

  • ディスクが用意されていない

  • 同名のファイルがすでに存在する

  • ファイルが作成できない(権限なしなど)

ただし、以下の場合はエラーになりません。

  • ディレクトリ名が存在しない(ディレクトリが自動作成されます)

続行の指示の入力において、以下の場合は再入力が要求されます。

  • 空Enter(または“y”、“q”以外)

なお、本オプションは、“-v”と“-f”オプションと同時に指定することはできません。

-U NCHAR=UCS2B

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

-e

-iオプションで指定した表のDSIに対してアクセス禁止状態が設定されていても強制的にデータを出力する場合に指定します。
表のDSIにアクセス禁止状態が設定されていない場合には指定できません。
表のDSIにアクセス禁止状態が設定されている場合に本オプションを省略すると、エラーとなります。

-f 条件指定ファイル名

ある条件によりデータを検出して、この単位でファイルに出力する場合に指定します。
ファイル名は絶対パス名で指定します。
ここで指定するファイルには、データを抽出するための条件と、抽出したデータの出力先のファイル名を記述しておきます。
また、データを抽出するための条件は複数個指定することができ、それぞれのデータを別々のファイルに出力できます。
条件指定ファイル名に指定できる長さは、256バイトまでです。
以下に、データを分割する条件と、データの出力先の記述形式を説明します。

形式-1
# コメント
WHERE (列名[{,列名}…]) = (?[{,?}…])
{USING (定数[{,定数}…]) TO 出力ファイル名}…
形式-2
# コメント
WHERE (列名[{,列名}…]) BETWEEN (?[{,?}…]) AND (?[{,?}…])
{USING (定数[{,定数}…],定数[{,定数…]) TO 出力ファイル名}…

それぞれの形式について、出力ファイルへの出力対象となるデータを以下に示します。

形式-1
    # コメント
    WHEREの指定:(C1,C2, …,Cn) = (?,?,…,?)
    USINGの指定:(V1,V2, …,Vn)
    出力データ :以下の条件式の結果が真になる行の集まりが、出力ファイル名で指定されたファイルに出力されます。
    条件式     :C1 = V1 AND C2 = V2 AND … AND Cn = Vn
形式-2
    # コメント
    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で指定可能な列のデータ型は、以下のとおりです。

    表2.1 表 WHEREで指定可能な列のデータ型

    列の属性

    精度

    位取り

    長さ

    備考

    SMALLINT

    INTEGER

    NUMERIC(p,q)

    1

    18

    0

    精度

    DECIMAL(p,q)

    1

    18

    0

    精度

    CHARACTER(n)

    1

    1000
    (注)

    可変長
    文字型は
    指定不可

    NATIONALCHARACTER(n)

    1

    500
    (注)

    可変長
    日本語は
    指定不可

    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
-v 分割指定ファイル名

任意の行数単位にデータを別々のファイルに分割して出力する場合に指定します。
ファイル名は絶対パス名で指定します。
ここで指定するファイルには、分割するデータの行数と、分割したデータの出力先のファイル名を記述しておきます。
分割指定ファイル名に指定できる長さは、256バイトまでです。
以下にデータを分割する指示と、データの出力先の記述形式を説明します。

形式
# コメント
{COUNT 行数 TO 出力ファイル名}…
COUNT - TO 出力ファイル名
  • 先頭に“#”がある行は、注釈行として読みとばされます。このとき、“#”は必ず行の先頭に記述する必要があります。

  • COUNTに行数を指定することにより、指定した行数分のデータを出力ファイルに出力します。また、行数を指定したCOUNTを複数指定することにより、指定した行数分のデータをそれぞれ別々の出力ファイルに出力することができます。なお“-”を指定したデータCOUNTを1個だけ必ず指定する必要があります。 DSIの格納データ数が、COUNTで指定した行数の合計を超えた場合、残りのデータは“-”を指定したCOUNTに指定した出力ファイルに出力されます。

  • COUNTの指定は32個まで指定できます。なお、異なるCOUNTの指定に対し、同一の出力ファイル名を指定することはできません。

  • COUNTの指定に対し、抽出するデータが対応する行数に満たない場合は、その行数分だけのデータを出力ファイルに出力します。また、抽出するデータが1件もない場合、対応する出力ファイル名で指定されたファイルが0バイトの大きさで作成されます。なお、出力ファイルの作成において、1つでも出力に失敗した場合、すべての出力ファイルが作成されません。

  • COUNTの行数は1以上の数字で指定します。

出力ファイル名

データを出力するファイルの、ファイル名を指定します。
ファイル名は絶対パス名で指定します。
この場合、出力対象のすべてのデータが、出力ファイル名で指定したファイルに出力されます。
出力ファイル名に指定できる長さは、256バイトまでです。
なお、出力ファイルの形式の詳細については、“RDB運用ガイド”の外部ファイルの形式を参照してください。

使用例

例1

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

rdbunl -i 在庫管理DB.在庫表DSI 
       -U NCHAR=UCS2B
        c:\rdb\data\unl1.dat
例2

任意の列を選択し、この列で構成するデータをc:\rdb\data上のファイル名unl2.txtにテキスト形式で出力します。

rdbunl -i 在庫管理DB.在庫表DSI -t  -c 倉庫番号,製品名
       c:\rdb\data\unl2.txt
例3

在庫管理DBに属する在庫表DSIのデータを条件指定ファイルに指定した条件ごとに別々のファイルに分割して出力します。

rdbunl -i 在庫管理DB.在庫表DSI -t
       -f c:\rdb\data\term.txt
条件指定ファイル(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
例4

在庫管理DBに属する在庫表DSIのデータを分割指定ファイルに指定した行数単位に別々のファイルに分割して出力します。

rdbunl -i 在庫管理DB.在庫表DSI -t 
       -v c:\rdb\data\part.txt
分割指定ファイル(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以外 : 異常終了

注意