rdbunlsqlコマンドおよびrdbuptコマンドで使用する外部ファイルについて説明します。
外部ファイルは、1レコードが表の1行分のデータを構成するバイナリ形式またはテキスト形式で作成したファイルです。
外部ファイルに記述する文字コード系は、以下のとおりです。
バイナリ形式の場合
処理対象のデータベースの文字コード系で記述します。
ただし、rdbuptコマンドにオプションを指定した場合、各国語文字型はUCS-2形式をバイトスワップした形式(リトルエンディアン)で記述することができます。
また、rdbunlsqlコマンドにオプションを指定した場合、各国語文字はUCS-2形式をバイトスワップした形式(リトルエンディアン)で出力されます。
参照
オプションの詳細については、“コマンドリファレンス”を参照してください。
テキスト形式の場合
データベースの文字コード系と異なるコード系で入出力データを作成することができます。外部ファイルからデータを入力する場合は、作成した外部ファイルの文字コード系をコマンドのオプションで指定します。データベースからデータを出力する場合は、出力する外部ファイルの文字コード系をコマンドのオプションで指定します。オプションを省略した場合は、データベースの文字コード系が指定されたものとみなします。
参照
オプションの詳細については、“コマンドリファレンス”を参照してください。
外部ファイルの文字コード系と処理対象のデータベースの文字コード系が異なる場合、コード変換が行われます。コード変換により変換先に該当する文字コードが存在しない場合は、コード変換エラーとなります。
外部ファイルの例を以下に示します。
NULL値をデータとして格納する場合は、外部ファイルの形式が異なります。外部ファイルのすべてのレコードについて、表の列のデータの前に2バイトのNULL表示域が必要となります。NULL表示域は、その列のデータ値がNULLであるか否かを示します。NULL表示域を持つ外部ファイルの形式を以下に示します。
データがNULL値でない場合
データがNULL値の場合
列のデータ型が可変長文字列型の列に格納するデータを作成するためには、格納するデータの文字数を示す2バイトの長さ表示域が列のデータの直前に必要となります。外部ファイルの例を以下に示します。
列のデータ型と外部ファイルのデータ形式の対応を以下に示します。
備考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 | NATIONAL CHARACTER | |
EUCコードのS90コード | EUCコードのS90コード | COBOL_EUC形式のS90コード |
シフトJISコード | シフトJISコード | シフトJISコード |
UNICODE | UTF-8形式 | UCS-2形式 |
記号 | 説明 |
---|---|
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行分のデータの終了は改行記号を指定します。
rdbuptコマンドでは、オプションを指定することで、区切り文字および囲み文字に別の文字を指定できます。また、指定する入力ファイルの文字コード系がUTF-8形式の場合、文字コード系の種類を示す制御情報の有無に関わらずそのテキストファイルを処理することができます。制御情報は、テキストエディタにより、テキストファイルの先頭3バイトに付加されることのある情報です。
EFBBBF(3バイトの16進数)
なお、rdbunlsqlコマンドでは、出力するテキスト形式のデータがUTF-8形式の場合でも、この制御情報を付加しません。
注意
テキスト形式では、BLOB型を扱えません。
BLOB型のデータを扱う場合は、バイナリ形式にしてください。
参照
オプションの詳細については、“コマンドリファレンス”を参照してください。
テキスト形式データの格納ファイルの内容を以下に示します。
列のデータ型と外部ファイルのデータの記述形式の対応を以下に示します。
列のデータ型 | 記述形式 |
---|---|
SMALLINT |
|
INTEGER |
|
NUMERIC(p,q) | 整数部(小数点の左側)の数字の数はp-q以下 |
DECIMAL(p,q) | |
CHARACTER(n) |
|
CHARACTER | |
NATIONAL |
|
NATIONAL | |
REAL | 仮数E指数 |
DOUBLE | |
TIMESTAMP | "YYYY-MM-DD hh:mm:ss" |
DATE | "YYYY-MM-DD" |
TIME | "hh:mm:ss" |
INTERVAL | 詳細は“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" |
記号 | 説明 |
---|---|
Y | 年をその格納サイズの2進数で設定します。 |
M | 月をその格納サイズの2進数で設定します。 |
D | 日をその格納サイズの2進数で設定します。 |
h | 時間をその格納サイズの2進数で設定します。 |
m | 分をその格納サイズの2進数で設定します。 |
s | 秒をその格納サイズの2進数で設定します。 |
備考. “…”はn: 時間隔先行フィールドに指定された桁数の繰り返しを示します。
データ項目にNULL値を指定する場合は、文字項目の場合でも数値項目の場合でも区切り文字の間に何も指定しない形で指定します。また、データ項目が1行の最後の列である場合は、直前のデータ項目との区切り文字を指定した後に改行記号が続くことになります。なお、NULL値のデータ項目は、対応する表定義の列にNOT NULLが指定されている場合には指定できません。
文字項目にNULL値を設定する場合(データ項目の途中にある場合)
文字項目にNULL値を設定する場合(データ項目の最後にある場合)