OPTIONALLY ENCLOSED BY
句およびTERMINATED BY
句を使用するフィールドの場合は、次の処理が行われます。
フィールドの先頭に空白がある場合は、その空白がすべてスキップされます。
最初に検出された空白以外の文字が、最初のOPTIONALLY ENCLOSED BY
デリミタに一致する文字列の先頭であるかどうかがパーサーによって確認されます。そうでない場合に、OPTIONALLY ENCLOSED BY
デリミタがデータ内に存在しないと、フィールドの現在の位置から最初のTERMINATED BY
デリミタまでがフィールドのデータとして読み込まれます(デリミタ自体は読み込まれません)。TERMINATED BY
デリミタが最初の列位置にある場合、そのフィールドはNULLとなります。TERMINATED BY
デリミタが検出される前にレコードの終わりが検出された場合は、レコードの末尾までのすべてのデータがフィールドの要素とみなされます。
最初のOPTIONALLY ENCLOSED BY
デリミタが検出された場合は、2番目のOPTIONALLY ENCLOSED BY
デリミタの検索が開始されます。
2番目のOPTIONALLY ENCLOSED BY
デリミタが2つ隣合せで検出された場合は、1つのデリミタが記述されていると解釈した上で、フィールドのデータ要素に含まれます。引き続き、2番目のOPTIONALLY ENCLOSED BY
デリミタが検索されます。
2番目のOPTIONALLY ENCLOSED BY
デリミタが検出される前にレコードの終わりが検出された場合、その行は拒否されます。
OPTIONALLY ENCLOSED BY
デリミタがデータ内に存在する場合は、パーサーによりTERMINATED BY
デリミタが検索されます。TERMINATED BY
デリミタがWHITESPACE
以外の場合、2番目のOPTIONALLY ENCLOSED BY
デリミタの最後とTERMINATED BY
デリミタの間にある空白はスキップされます。
TERMINATED BY
デリミタが検出される前にレコードの終わりが検出された場合でも、行は拒否されません。
注意:
空白文字をTERMINATED BY
デリミタとして指定し、OPTIONALLY ENCLOSED BY
も使用する場合は注意が必要です。SQL*Loaderでは、OPTIONALLY ENCLOSED BY
デリミタを検索するときに、先頭の空白が取り除かれます。2つのTERMINATED BY
デリミタがレコードの途中に隣り合って含まれている場合(通常は、レコードのフィールドをNULLに設定する目的でこのように記述します)、最初のTERMINATED BY
デリミタの空白を使用してフィールドが終了されますが、残りの空白は、次のフィールドの先頭の空白とみなされ、次のフィールドのTERMINATED BY
デリミタとはみなされません。NULL値をロードする場合は、データ内にENCLOSED BY
デリミタを含める必要があります。