ページの先頭行へ戻る
Symfoware Server V12.7.0 RDB運用ガイド
FUJITSU Software

4.1.1 外部ファイルの形式

rdbsloaderコマンドによるデータベースの創成では、外部ファイルを利用します。この外部ファイルは、rdbunlコマンドまたはrdbunlsqlコマンドでのデータの出力や、rdbsaloaderコマンド、rdbsuloaderコマンドまたはrdbuptコマンドでのデータベースの更新においても使用します。

外部ファイルは、1レコードが表の1行分のデータを構成するバイナリ形式またはテキスト形式で作成したファイルです。

外部ファイルに記述する文字コード系は、以下のとおりです。

外部ファイルの文字コード系と処理対象のデータベースの文字コード系が異なる場合、コード変換が行われます。コード変換により変換先に該当する文字コードが存在しない場合は、コード変換エラーとなります。

バイナリ形式

在庫管理DBにおける在庫表のDSIである在庫表DSIにデータを創成するための外部ファイルの例を以下に示します。

NULL値

NULL値をデータとして格納する場合は、外部ファイルの形式が異なります。外部ファイルのすべてのレコードについて、表の列のデータの前に2バイトのNULL表示域が必要となります。NULL表示域は、その列のデータ値がNULLであるか否かを示します。NULL表示域を持つ外部ファイルの形式を以下に示します。

NULL表示域の値は以下のとおりです。

0000(16進数):

データがNULL値でない場合

FFFF(16進数):

データがNULL値の場合

可変長文字列

列のデータ型が可変長文字列型の列に格納するデータを作成するためには、格納するデータの文字数を示す2バイトの長さ表示域が列のデータの直前に必要となります。外部ファイルの例を以下に示します。

列のデータ型と外部ファイルのデータ形式の対応を以下に示します。

列のデータ型と外部ファイルのデータ形式

注) rdbunlsqlコマンドの場合には、格納構造がOBJECT構造以外の場合と同じです。

備考1. データ形式の説明

記号

説明

l

可変長文字列の有効なデータ長(バイト数)を表します。

3

16進数です(10進数で3)。

j

データに対応する数値(16進数の0~9)を表します。

g

符号(正 : 16進数のA、C、E、F 負 : 16進数のB、D)を表します。

ss

符号(正 : 16進数の2B 負: 16進数の2D)を表します。

Y

2バイトの2進数で西暦の年を表します。

M

1バイトの2進数で月を表します。

D

1バイトの2進数で日を表します。

h

1バイトの2進数で時を表します。

m

1バイトの2進数で分を表します。

s

1バイトの2進数で秒を表します。

R

16進数で00000000を設定する必要があります。

備考2. 指定例欄の枠内の文字は各国語を除き、すべて16進数です。

備考3. 太枠部分は、符号桁またはデータ長桁を表します。

備考4. 外部ファイルの文字コード系は、データベースの文字コード系と一致している必要があります。データベースの文字コード系により、外部ファイルは、以下の文字コード系で記述します。

データベースの文字コード系

外部ファイルに記述する文字コード系

CHARACTER
CHARACTER VARYING

NATIONAL CHARACTER
NATIONAL CHARACTER VARYING

EUCコードのS90コード

EUCコードのS90コード

COBOL_EUC形式のS90コード

シフトJISコード

シフトJISコード

シフトJISコード

UNICODE

UTF-8形式

UCS-2形式 (注)

UTF-32形式 (注)

注) Uオプションの指定により、UCS-2とUTF-32のいずれかの形式を選択することができます。

INTERVALのデータ形式

記号

説明

n

1~9(省略値 : 2)

b

データ型に指定されたn(時間隔先行フィールドの桁数)により以下のように決定されます。


n

b

1~2

2byte

3~4

3byte

5~9

5byte


記号

説明

S

正または負の符号をそれぞれ文字の“+”または“-”のいずれかで必ず設定します。

Y

年をその格納サイズの2進数で設定します。

M

月をその格納サイズの2進数で設定します。

D

日をその格納サイズの2進数で設定します。

h

時間をその格納サイズの2進数で設定します。

m

分をその格納サイズの2進数で設定します。

s

秒をその格納サイズの2進数で設定します。

テキスト形式

データファイルはCSV形式に対応しています。

1行分のデータは、列に対応するデータ項目の集まりで構成します。1つの列のデータ型に対応する各データ項目の間は、コンマ(,)で区切ります。データ項目には、文字項目と数値項目があります。文字項目は二重引用符で文字列を囲み、数値項目は数値定数の文字列をそのまま指定します。また、1行分のデータの終了は改行記号を指定します。

rdbsloaderコマンド、rdbsaloaderコマンド、rdbsuloaderコマンドまたはrdbuptコマンドでは、オプションを指定することで、区切り文字および囲み文字に別の文字を指定できます。また、指定する入力ファイルの文字コード系がUTF-8形式の場合、文字コード系の種類を示す制御情報の有無に関わらずそのテキストファイルを処理することができます。制御情報は、テキストエディタにより、テキストファイルの先頭3バイトに付加されることのある情報です。

制御情報(UTF-8形式):

EFBBBF(3バイトの16進数)

なお、rdbunlコマンドまたはrdbunlsqlコマンドでは、出力するテキスト形式のデータがUTF-8形式の場合でも、この制御情報を付加しません。

文字列型および各国語文字列型のデータ:

文字列型および各国語文字列型のデータの長さが列の長さを超えた場合、列の長さを超えた部分の扱いについて、RDBコマンドにより差異があります。

rdbsloaderコマンドの場合

以下のいずれかになります。

  • qdg02970uのエラーになります。(注)

  • 列の長さを超えた部分が空白の場合、列の長さを超えた部分を切り捨てます。列の長さを超えた部分が空白以外の場合、qdg02970uのエラーになります。

注) 以下の場合が該当します。

  • 表のデータ構造がRANDOMである。または、

  • 表のデータ構造がSEQUENTIAL構造であり、かつ、以下のすべての条件を満たす。

    ・ 表のレコード長がページ内格納域長を超えていない。

    ・ 表のDSOで、格納オプションにPRECEDENCE(1)を指定していない。

    ・ 表のDSIで、圧縮指定(COMPRESS)を指定していない。

    ・ 表に関連するインデックスのデータ構造がXMLでない。

rdbsaloaderコマンドおよびrdbsuloaderコマンドの場合

列の長さを超えた部分が空白の場合、列の長さを超えた部分を切り捨てます。列の長さを超えた部分が空白以外の場合、qdg02970uのエラーになります。

rdbuptコマンドの場合

qdg02970uのエラーになります。

参照

オプションの詳細については、“コマンドリファレンス”を参照してください。

テキスト形式データの格納ファイルの内容を以下に示します。

列のデータ型と外部ファイルのデータの記述形式の対応を以下に示します。

表4.1 データ項目の指定形式

列のデータ型

記述形式

SMALLINT

-32768~32767(小数点なし)

INTEGER

-2147483648~2147483647(小数点なし)

NUMERIC(p,q)

整数部(小数点の左側)の数字の数はp-q以下
小数部(小数点の右側)の数字の数はq以下
備考. 定数が小数点を含まない場合はすべて整数部となる。

DECIMAL(p,q)

CHARACTER(n)

  • 長さがn以下の二重引用符で囲んだ文字列です。
    例:"文字"

  • 二重引用符内の区切り文字はデータとして扱われます。
    例:"123.456"

  • データに二重引用符を指定する場合、連続して記述します。
    例:"TEL""12345"""

  • 各コマンドで指定した入力データまたは出力データの文字コード系を示すオプション(jオプション)と記述する文字コード系の関係を以下に示します。
    EUC_S90: EUCコードのS90コード(EUCコード)
    SJIS: シフトJISコード
    UNICODE: UTF-8形式
    このオプションを省略した場合は、データベースの
    文字コード系と同じコード系で記述します。

CHARACTER
VARYING(n)

NATIONAL
CHARACTER(n)

  • 長さがn以下の二重引用符で囲んだ文字列です。
    例: "文字"

  • 各コマンドで指定した入力データまたは出力データの文字コード系を示すオプション(jオプション)と記述する文字コード系の関係を以下に示します。
    EUC_S90: COBOL_EUC形式のS90コード
    SJIS: シフトJISコード
    UNICODE: UTF-8形式
    このオプションを省略した場合は、データベースの文字コード系と同じコード系で記述します。

NATIONAL
CHARACTER
VARYING(n)

REAL

仮数E指数
例: -1.05E+100
備考. 仮数および指数で符号"+"は省略可能

DOUBLE
PRECISION

TIMESTAMP

"YYYY-MM-DD hh:mm:ss"
例: "2007-04-10 21:10:00"
    "2007-5-1 1:5:0"

BINARY LARGE
OBJECT(n)

Base64で表現した値を二重引用符で囲んだ文字列です。
例:格納データが 0x61626364の場合
    "YWJjZA=="
備考.Base64はRFC3548で定義されています。

DATE

"YYYY-MM-DD"
例: "2007-04-10"

TIME

"hh:mm:ss"
例: "21:10:00"

INTERVAL

詳細は“表4.2 INTERVALの指定形式”を参照してください。

p: 精度 q: 位取り n: 長さ

表4.2 INTERVALの指定形式

列のデータ型

記述形式

INTERVAL YEAR [(n)] TO MONTH
INTERVAL YEAR [(n)]
INTERVAL MONTH [(n)]

"[+/-]Y…Y-MM"
"[+/-]Y…Y"
"[+/-]M…M"
10年と2カ月の例: "10-02"

INTERVAL DAY [(n)] TO HOUR
INTERVAL DAY [(n)] TO MINUTE
INTERVAL DAY [(n)] TO SECOND
INTERVAL DAY [(n)]

"[+/-]D…D hh"
"[+/-]D…D hh:mm"
"[+/-]D…D hh:mm:ss"
"[+/-]D…D"
14日と2時間の例: "14 02"

INTERVAL HOUR[(n)] TO MINUTE
INTERVAL HOUR[(n)] TO SECOND
INTERVAL HOUR[(n)]

"[+/-]h…h:mm"
"[+/-]h…h:mm:ss"
"[+/-]h…h"
21時間と12分の例: "21:12"

INTERVAL MINUTE[(n)] TO SECOND
INTERVAL MINUTE[(n)]

"[+/-]m…m:ss"
"[+/-]m…m"
72分11秒の例: "72:11"

INTERVAL SECOND[(n)]

"[+/-]s…s"
68秒の例: "68"


記号

説明

Y

年をその格納サイズの2進数で設定します。

M

月をその格納サイズの2進数で設定します。

D

日をその格納サイズの2進数で設定します。

h

時間をその格納サイズの2進数で設定します。

m

分をその格納サイズの2進数で設定します。

s

秒をその格納サイズの2進数で設定します。

備考. “…”はn: 時間隔先行フィールドに指定された桁数の繰り返しを示します。

NULL値

データ項目にNULL値を指定する場合は、文字項目の場合でも数値項目の場合でも区切り文字の間に何も指定しない形で指定します。また、データ項目が1行の最後の列である場合は、直前のデータ項目との区切り文字を指定した後に改行記号が続くことになります。なお、NULL値のデータ項目は、対応する表定義の列にNOT NULLが指定されている場合には指定できません。

例1

文字項目にNULL値を設定する場合(データ項目の途中にある場合)

例2

文字項目にNULL値を設定する場合(データ項目の最後にある場合)