5.5.4 繰返し列を含む表の配列データ形式
繰返し列を含む表の場合に,入力データファイルに記述する配列データの指定方法について説明します。
入力データファイルの形式は,入力データ形式(DAT形式,バイナリ形式,固定長データ形式),配列データ形式(FF,FV,VV),及び可変長データ型かどうかによって異なります。
(1) 記述形式
繰返し列を含む表の場合の入力データファイルに記述する配列データの指定方法を次の表に示します。
内容 |
ファイル形式 |
配列データ形式 |
||
---|---|---|---|---|
FF形式 |
FV形式 |
VV形式 |
||
入力データ中に実要素数を指定するかどうか |
− |
指定しません。 |
指定します。 |
|
実要素数の指定方法 |
− |
− |
DAT形式の場合,文字で指定します。固定長データ形式及びバイナリ形式の場合,2バイトの数値(16進数)で指定します。 |
|
入力データ中に指定する要素データの数 |
− |
表定義で指定した要素数以下の数。詳細は「入力データ中の要素データ数と表定義で指定した要素数の関係」を参照してください。 |
実要素数分 |
|
DBに格納する要素数 |
− |
ナル値の取り扱い方法によって異なります。詳細は「列のナル値と要素のナル値の扱い」を参照してください。 |
実要素数分 |
|
入力データ形式と指定可否 |
DAT形式 |
指定できます。 |
指定できません。 |
指定できます。 |
バイナリ形式 |
可変長は指定できません。 |
指定できます。 |
||
固定長データ形式 |
指定できます。 |
行データ全体が固定長のため指定できません。 |
||
ナル値の指定方法(要素としてのナル値) |
DAT形式 |
通常の列と同様に区切り文字の連続などで指定します。詳細は「DAT形式の場合」を参照してください。 |
− |
|
バイナリ形式 |
通常の列と同様にナル値・関数情報ファイルでナル値とみなす値を指定します。 |
|||
固定長データ形式 |
通常の列と同様に列構成情報ファイルでナル値とみなす値を指定します。 |
− |
||
ナル値の指定方法(列としてのナル値) |
− |
要素にすべてナル値を指定します。ただし,全要素にナル値を設定する場合と列としてナル値を設定する場合があります。詳細は「列のナル値と要素のナル値の扱い」を参照してください。 |
実要素数に0を指定します。 |
|
DBに格納する要素数 |
− |
ナル値の扱いの指定によって異なります。詳細は「列のナル値と要素のナル値の扱い」を参照してください。 |
指定された実要素数分のデータを格納します。 |
|
可変長データ型の指定方法 |
DAT形式 |
通常の列と同じです。 |
− |
通常の列と同じです。 |
バイナリ形式 |
指定できません。 |
有効データ長分指定します(埋め字なし)。 |
||
固定長データ形式 |
表の定義長分指定し,有効データより後ろに埋め字をします。 |
− |
||
DAT形式ファイルの場合の要素データの区切り文字 |
− |
列の区切り文字と同じです。 |
− |
列の区切り文字と同じです。 |
要素データのエラーチェック |
− |
通常の列と同様に,データ型に応じたチェックをするとともにFF形式及びVV形式の場合,実要素数のチェックをします。また,FF形式及びVV形式の場合,有効要素データ以外の部分に対してデータを指定しますが,有効要素以降の部分についてはチェックしません。 |
(a) DAT形式の場合
DAT形式ファイルには,FF形式,又はVV形式の配列データ形式で記述できます。
- FF形式のフォーマット:
-
指定要素数分を区切り文字で区切ってデータを記述します。列構成情報ファイルを省略,又は列構成情報ファイルで指定要素数を省略した場合,最大要素数が指定要素数になります。
- VV形式のフォーマット:
-
要素データの先頭に実要素数0〜最大要素数で指定し,実要素数分を区切り文字でデータを区切って記述します。
(b) バイナリ形式の場合
バイナリ形式ファイルには,FF,FV,及びVV形式の配列データ形式で記述できます。
- FF形式のフォーマット:
-
指定要素数分のデータを表「各データ型に対する列データ・パラメタの記述形式(バイナリ形式)」に示す形式で記述します。ナル値・関数情報ファイル自体又はナル値・関数情報ファイルで指定要素数を省略した場合,最大要素数が指定要素数になります。
- FV形式のフォーマット:
-
要素データの先頭に実要素数を2バイトの2進数で指定し,指定要素数分のデータを表「各データ型に対する列データ・パラメタの記述形式(バイナリ形式)」に示す形式で記述します。ナル値・関数情報ファイル自体又はナル値・関数情報ファイルで指定要素数を省略した場合,最大要素数が指定要素数になります。
- VV形式のフォーマット:
-
要素データの先頭に実要素数を2バイトの2進数で指定し,実要素数分のデータを表「各データ型に対する列データ・パラメタの記述形式(バイナリ形式)」に示す形式で記述します。
(c) 固定長データ形式の場合
固定長データ形式ファイルには,FF形式又はFV形式の配列データ形式で記述できます。
列構成情報ファイル,及びナル値・関数情報ファイルを省略,又は列構成情報ファイル,及びナル値・関数情報ファイルで指定要素数を省略した場合,最大要素数が指定要素数になります。
なお,バイナリ形式でデータを記述した場合,VARCHAR,NVARCHAR,MVARCHARで指定する各要素のデータ長が定義長に満たない場合は,定義長まで埋め字をする必要があります。
- FF形式のフォーマット:
-
指定要素数分のデータを表「各データ型に対する列データ・パラメタの記述形式(バイナリ形式)」に示す形式で記述します。
- FV形式のフォーマット:
-
要素データの先頭に実要素数を2バイトの2進数で指定し,指定要素数分のデータを表「各データ型に対する列データ・パラメタの記述形式(バイナリ形式)」に示す形式で記述します。
(2) 列のナル値と要素のナル値の扱い
繰返し列には列としてのナル値と,要素としてのナル値があります。データベース作成ユティリティでは,どちらもデータベースに格納できます。
繰返し列に対してデータロードする場合,入力データファイル中の要素のナル値の並び方には次に示す場合があります。繰返し列への入力データとナル値の種類を次の図に示します。
この図に示すような場合,ナル値の扱いの指定(array文のナル値オプション,列構成情報ファイル及びナル値・関数情報ファイルのnullsetオペランドでの指定)によって,すべての要素データがナル値の場合,列としてナル値としたり,要素データの後方に連続したナル値を有効データとしないで,データベースに格納しない(要素数に含まない)こともできます。
繰返し列へデータロードする場合のデータベース作成ユティリティ(pdload)でのナル値の扱いについて次の表に示します。
項目 |
ナル値の扱い |
||
---|---|---|---|
FF形式 |
FV形式及びVV形式 |
||
ナル値の判定方法 |
DAT形式 |
通常の列と同様(例えば,区切り文字が連続して入力された場合)に判定し,その要素をナル値とみなします。 |
|
バイナリ形式 |
通常の列と同様(ナル値とみなす値を列構成情報ファイルで指定します)に判定し,その要素をナル値とみなします。 |
||
固定長データ形式 |
通常の列と同様(ナル値とみなす値をナル値・関数情報ファイルで指定します)に判定し,その要素をナル値とみなします。 |
||
ナル値のデータベースへの格納 |
列としてのナル値の指定方法 |
途中のナル値については,データベースに格納します。後方に連続したナル値,及び指定した要素がすべてナル値の場合は,「FF形式でのナル値の扱い」を参照してください。 |
指定された要素数が0の場合,列としてナル値を格納します。要素データがすべてナル値でも,列としてのナル値とはしないで,実要素数分のナル値を設定します。 |
要素としてのナル値の指定方法 |
途中のナル値については,データベースに格納します。後方に連続したナル値,及び指定した要素がすべてナル値の場合は,「FF形式でのナル値の扱い」を参照してください。 |
途中のナル値,及び後方に連続したナル値のどちらも入力データ中に指定した実要素数の範囲内であれば,データベースにナル値を格納します。 |
(a) FF形式でのナル値の扱い
FF形式の場合,入力データ中には実要素数を指定しません。
このため,後方に連続したナル値がある場合,次に示す指定によって無効な要素データとみなし,データベースに格納しないようにできます。
-
制御情報ファイルarray文のnullsetオペランド
-
列構成情報ファイルのnullsetオペランド
-
ナル値・関数情報ファイルのnullsetオペランド
なお,列構成情報ファイル及びナル値・関数情報ファイルでは列単位の指定,制御情報ファイルのarray文では表単位の指定です。三つとも指定した場合,列構成情報ファイル及びナル値・関数情報ファイルでの指定が優先されます。
また,nullsetオペランドの指定を省略した場合はnullset=cが仮定されます。
ナル値オプション指定値とデータベースへの格納方法を次の表に示します。
ナル値の種類 |
ナル値オプション指定値 |
|
---|---|---|
c(デフォルト) |
e |
|
途中のナル値 |
該当する要素にナル値を格納します。 |
該当する要素にナル値を格納します。 |
後方の連続したナル値(以前に有効要素データが一つでもある場合) |
該当する要素(後方の連続したナル値)は,無効データとみなし,データベースに格納しません。 |
該当する要素(後方の連続したナル値)にナル値を格納します。※ |
後方の連続したナル値(要素データがすべてナル値の場合) |
列をナル値とします。 |
全要素にナル値を格納します。※ |
- 注
-
FF形式の場合,入力データファイル中の要素データの数は,表定義で指定した要素数よりも少ないときがあります。
この場合,入力データファイル中の実要素数より後方の部分は,データが指定されていません。これは,ナル値ではなく,要素データがないということであるため,nullset=eが指定されてもナル値は格納しません。
- 注※
-
nullset=eを指定した場合,入力データファイルの要素データ数分のナル値がデータベースに格納されます。このため,データベースの格納効率を考慮すると,nullset=cを指定することをお勧めします。nullset=eを指定するのは,ナル値の数をそろえたい場合です。
(3) 入力データ中の要素データ数と表定義で指定した要素数の関係
FF形式,及びFV形式の場合,入力データ中に指定する要素データの数を表定義で指定した最大要素数以下の任意の個数にできます。
入力データ中に指定した要素データの個数(実要素数)は,次のように指定します。
- DAT形式,及び固定長データ形式の場合:
-
列構成情報ファイルのelementオペランド
- バイナリ形式の場合:
-
ナル値・関数情報ファイルのelementオペランド
なお,入力データ中の要素数と,表定義で指定した要素数が同じ場合は指定不要です。この場合,表定義で指定した要素数が仮定されます。
入力データ中に指定した繰返し列の要素データ数と,表定義で指定した要素数が異なる場合のデータベースへの格納可否を次の表に示します。
入力データ中の繰返し要素データ数:表定義で指定した繰返し要素数 |
繰返し列への配列データ形式 |
||
---|---|---|---|
FF形式 |
FV形式(データ中に指定した実要素数) |
VV形式(データ中に指定した実要素数) |
|
入力データ要素数>表定義要素数 |
エラー |
エラー |
エラー |
入力データ要素数=表定義要素数 |
正常にデータを格納 |
正常にデータを格納(入力データ中に指定した要素数分の要素データをデータベースに格納します) |
正常にデータを格納 |
入力データ要素数<表定義要素数 |
正常にデータを格納(elementオペランドで指定した要素数分のデータを格納し,以降の要素は指定がないため,データベースに格納しません) |
正常にデータを格納(入力データ中に指定した要素数分の要素データをデータベースに格納します) |
正常にデータを格納 |
(4) 記述例
(a) DAT形式の場合
DAT形式のデータ記述例を次の図に示します。
表定義:CREATE TABLE T1(C1 INTEGER,C2 CHAR(1) ARRAY[10])
(b) バイナリ形式の場合
バイナリ形式のデータ記述例を次の図に示します。
表定義:CREATE TABLE T1(C1 CHAR(4),C2 CHAR(10),C3 CHAR(5) ARRAY[10])
(c) 固定長データ形式の場合
固定長データ形式のデータ記述例を次の図に示します。
表定義:CREATE TABLE T1(C1 CHAR(4),C2 CHAR(10),C3 VARCHAR(5) ARRAY[10])