デリミタ句が指定されていると、PRESERVE
BLANKS
オプションに次のような影響があります。
オプションの囲みデリミタがない場合、先頭の空白はそのまま残ります。
事前にフィールド・サイズが指定された場合にも、後続の空白を残します。
たとえば、次のフィールドについて考えてみます。ここでは、アンダースコアは空白を表します。
__aa__,
このフィールドが次のデリミタ句でロードされるとします。
TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
この場合、PRESERVE
BLANKS
を指定すると、先頭の空白および後続の空白がともに保存されます。PRESERVE
BLANKS
を指定しない場合は、先行する空白は切り捨てられます。
次に、このフィールドが次の句でロードされるとします。
TERMINATED BY WHITESPACE
この場合、PRESERVE
BLANKS
を指定すると、次のフィールドの先頭の空白は、このフィールドが空白を含むPOSITION
句で指定されていないかぎり保存されません。このような指定がない場合は、SQL*Loaderによって前のフィールドの終わりにあるすべての空白を読み込まずにスキャンが実行され、次に空白以外の文字またはタブ以外の文字が現れた位置が次のフィールドの開始位置と認識されます。
関連項目: