ページの先頭行へ戻る
Symfoware Server V11.1.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. データ形式の説明

記号

説明

λ

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

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コード

EUCコードのU90コード

EUCコードのU90コード

COBOL_EUC形式のU90コード

シフトJISコード

シフトJISコード

シフトJISコード

UNICODE

UTF-8形式

UCS-2形式

INTERVALのデータ形式

記号

説明

n

1~9(省略値:2)

b

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

n

b

1~2
3~4
5~9

2byte
3byte
5byte

記号

説明

S

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

Y

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

M

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

D

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

h

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

m

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

s

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

テキスト形式

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

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

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

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

EFBBBF(3バイトの16進数)

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

参照

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

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

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

表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_U90: EUCコードのU90コード
     EUC_S90: EUCコードのS90コード
     SJIS: シフトJISコード
     UNICODE: UTF-8形式
  このオプションを省略した場合は、データベースの
  文字コード系と同じコード系で記述します。

CHARACTER
VARYING(n)

NATIONAL
CHARACTER(n)

-長さがn以下の二重引用符で囲んだ文字列です。
  例:"文字"
-二重引用符内の区切り文字はデータとして扱われます。
  例:"123.456"
-データに二重引用符を指定する場合、連続して記述
  します。
  例:"TEL""12345"""
-各コマンドで指定した入力データまたは出力データ
  の文字コード系を示すオプション(jオプション)と
  記述する文字コード系の関係を以下に示します。
     EUC_U90: COBOL_EUC形式のU90コード
     EUC_S90: COBOL_EUC形式のS90コード
     SJIS: シフトJISコード
     UNICODE: UCS-2形式
  このオプションを省略した場合は、データベースの
  文字コード系と同じコード系で記述します。

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値を設定する場合(データ項目の最後にある場合)