すべてのCHAR
フィールド、DATE
フィールド、および数値型EXTERNAL
フィールドで空白が切り捨てられないようにするには、制御ファイル内のLOAD
文でPRESERVE
BLANKS
を指定します。ただし、すべてのCHAR
、DATE
または数値型EXTERNAL
フィールドに空白を残す必要がない場合があります。その場合は、SQL*Loaderを使用して、PRESERVE
BLANKS
を、LOAD
文でグローバルに指定するのではなく、個々のフィールドのデータ型指定で指定することもできます。
次の例では、PRESERVE
BLANKS
がLOAD
文で指定されていない場合に、空白を含むc1
フィールドをデフォルトでゼロにします。これは、個々のフィールドに対してPRESERVE
BLANKS
を指定することで実現できます。指定したフィールドのみで空白が切り捨てられ、その他のフィールドでは空白はそのまま残されます。
c1 INTEGER EXTERNAL(10) PRESERVE BLANKS DEFAULTIF c1=BLANKS
この例では、PRESERVE
BLANKS
がフィールドに対して指定されていない場合、そのフィールドがNULL(0ではなく)として誤ってロードされます。
LOAD
文に対するオプションとしてPRESERVE
BLANKS
を指定して、ほとんどのCHAR
、DATE
および数値型EXTERNAL
フィールドに適用する必要がある場合があります。このオプションの指定は、個々のフィールドのデータ型指定でNO
PRESERVE
BLANKS
を指定して上書きできます。次に例を示します。
c1 INTEGER EXTERNAL(10) NO PRESERVE BLANKS