プライマリ・コンテンツに移動
Oracle® Databaseユーティリティ
12cリリース1 (12.1.0.2)
B71303-09
目次へ移動
目次
索引へ移動
索引

前
次

空白の切捨て

空白、タブおよびその他の印字されない文字(改行、LFなど)が空白を構成します。先頭の空白は、フィールドの開始位置にあります。後続の空白は、フィールドの終了位置にあります。フィールドの指定方法にもよりますが、空白は、フィールドのデータベースへの挿入時に、データの一部として含めることも切り捨てることもできます。これについて、図10-1に示します。この図では、2つのCHARフィールドがデータ・レコードに定義されています。

フィールド指定は制御ファイルに含まれています。制御ファイルのCHAR指定は、データベースのCHAR指定と同じではありません。制御ファイル内でCHARとして定義されたデータ・フィールドは、SQL*Loaderに行挿入の作成方法を指定するのみです。Oracle Databaseで必要な変換が行われ、データベースのCHARVARCHAR2NCHARNVARCHAR2NUMBERまたはDATE列にデータを挿入できるようになります。

デフォルトでは、SQL*Loaderを使用してCHARデータから後続の空白を削除した後、このデータをデータベースに渡します。その後、図10-1に示すとおり、フィールド1とフィールド2は3バイトのフィールドとしてデータベースに渡されます。ただし、データを表に挿入する場合は処理が異なります。

図10-1 フィールド変換の例

図10-1の説明が続きます
図10-1 フィールド変換の例の説明

列1は、データベース内で長さ5の固定長CHAR列として定義されます。そのため、データ(aaa)は5バイトの幅を保持したまま、その列で左揃えにされます。余った右側の部分は空白で埋められます。一方、列2は、最大長5バイトの可変長フィールドとして定義されています。その列(bbb)のデータも左揃えにされますが、長さは3バイトのままです。

表10-5に、PRESERVE BLANKSが指定されていない場合に空白が入力データ・フィールドから切り捨てられるケースおよびその処理方法を示します。空白の切捨てを回避する方法については、「空白の切捨てに対するPRESERVE BLANKSオプションの影響」を参照してください。

表10-5 空白の切捨てに関する動作のサマリー

指定 データ 結果 先頭の空白の存在(1) 後続の空白の存在1

サイズ指定あり

__aa__

__aa

あり

なし

終了デリミタ

__aa__,

__aa__

あり

あり脚注2

囲みデリミタ

"__aa__"

__aa__

あり

あり

終了と囲み

"__aa__",

__aa__

あり

あり

オプションの囲み(あり)

"__aa__",

__aa__

あり

あり

オプションの囲み(なし)

__aa__,

aa__

なし

あり

前のフィールドが空白で区切られている場合

__aa__

aa脚注3

なし

脚注参照 3

脚注 1 空白のみのフィールドが切り捨てられた場合、その値はNULLになります。

脚注2

空白で終了するフィールドを除きます。

脚注3

後続の空白があるかどうかは、表中の他の項目に示すとおり、現行のフィールドの指定によって異なります。

この項の残りの部分では、空白の切捨てに関する次の項目について説明します。