rdbsloaderコマンドによるデータベースの創成では、外部ファイルを利用します。この外部ファイルは、rdbunlコマンドまたはrdbunlsqlコマンドでのデータの出力や、rdbsaloaderコマンド、rdbsuloaderコマンドまたはrdbuptコマンドでのデータベースの更新においても使用します。
外部ファイルは、1レコードが表の1行分のデータを構成するバイナリ形式またはテキスト形式で作成したファイルです。
外部ファイルデータに記述する文字コード系は、以下のとおりです。
バイナリ形式の場合
処理対象のデータベースの文字コード系で記述します。
rdbsaloaderコマンド、rdbsloaderコマンド、rdbsuloaderコマンドまたはrdbuptコマンドにオプションを指定した場合、各国語文字はUCS-2形式をバイトスワップした形式(リトルエンディアン)で記述することができます。
また、rdbunlコマンドまたはrdbunlsqlコマンドにオプションを指定した場合、各国語文字はUCS-2形式をバイトスワップした形式(リトルエンディアン)で出力されます。
参照
オプションの詳細については、“コマンドリファレンス”を参照してください。
テキスト形式の場合
データベースの文字コード系と異なるコード系で入出力データを作成することができます。データファイルからデータを入力する場合は、作成した外部ファイルデータの文字コード系をコマンドのオプションで指定します。データベースからデータを出力する場合は、出力する外部ファイルの文字コード系をコマンドのオプションで指定します。オプションを省略した場合は、データベースの文字コード系が指定されたものとみなします。
参照
オプションの詳細については、“コマンドリファレンス”を参照してください。
外部ファイルデータの文字コード系と処理対象のデータベースの文字コード系が異なる場合、コード変換が行われます。コード変換により変換先に該当する文字コードが存在しない場合は、コード変換エラーとなります。
バイナリ形式について説明します。
在庫管理DBにおける在庫表のDSIである在庫表DSIにデータを創成するためのデータファイルの例を以下に示します。
NULL値をデータとして格納する場合は、データファイルの形式が異なります。データファイルのすべてのレコードについて、表の列のデータの前に2バイトのNULL表示域が必要となります。NULL表示域は、その列のデータ値がNULLであるかどうかを示します。NULL表示域を持つデータファイルの形式を以下に示します。
データがNULL値でない場合
データが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 | NATIONAL CHARACTER | |
EUCコードのS90コード | EUCコードのS90コード | COBOL_EUC形式のS90コード |
EUCコードのU90コード | EUCコードのU90コード | COBOL_EUC形式のU90コード |
シフトJISコード | シフトJISコード | シフトJISコード |
UNICODE | UTF-8形式 | UCS-2形式 |
記号 | 説明 |
---|---|
n | 1~9(省略値:2) |
b | データ型に指定されたn(時間隔先行フィールドの桁数)により以下のように決定されます。 |
n | b |
1~2 | 2byte |
記号 | 説明 |
---|---|
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バイトに付加されることのある情報です。
EFBBBF(3バイトの16進数)
なお、rdbunlコマンドまたはrdbunlsqlコマンドでは、出力するテキスト形式のデータがUTF-8形式またはUCS-2形式の場合でも、この制御情報を付加しません。
参照
オプションの詳細については、“コマンドリファレンス”を参照してください。
テキスト形式データの格納ファイルの内容を以下に示します。
列のデータ型とデータファイルのデータの記述形式の対応を以下に示します。
列のデータ型 | 記述形式 |
---|---|
SMALLINT | -32768~32767 (小数点なし) |
INTEGER | -2147483648 ~2147483647 (小数点なし) |
NUMERIC(p,q) | 整数部 (小数点の左側) の数字の数はp-q 以下 |
DECIMAL(p,q) | |
CHARACTER(n) | -長さがn以下の二重引用符で囲んだ文字列です。 |
CHARACTER | |
NATIONAL | -長さがn以下の二重引用符で囲んだ文字列です。 |
NATIONAL | |
REAL | 仮数E指数 |
DOUBLE | |
TIMESTAMP | "YYYY-MM-DD hh:mm:ss" |
BINARY LARGE | Base64で表現した値を二重引用符で囲んだ文字列です。 |
DATE | "YYYY-MM-DD" |
TIME | "hh:mm:ss" |
INTERVAL | 詳細は“表4.2 INTERVALの指定形式”を参照してください。 |
p:精度 q:位取り n:長さ
列のデータ型 | 記述形式 |
---|---|
INTERVAL YEAR [(n)] TO MONTH | "[+/-]Y…Y-MM" |
INTERVAL DAY [(n)] TO HOUR | "[+/-]D…D hh" |
INTERVAL HOUR[(n)] TO MINUTE | "[+/-]h…h:mm" |
INTERVAL MINUTE[(n)] TO SECOND | "[+/-]m…m:ss" |
INTERVAL SECOND[(n)] | "[+/-]s…s" 68秒の例:"68" |
Y: 年をその格納サイズの2進数で設定します。
M: 月をその格納サイズの2進数で設定します。
D: 日をその格納サイズの2進数で設定します。
h: 時間をその格納サイズの2進数で設定します。
m: 分をその格納サイズの2進数で設定します。
s: 秒をその格納サイズの2進数で設定します。
備考. “…”はn: 時間隔先行フィールドに指定された桁数の繰り返しを示します。