この形式で、同じ列(データ・ファイルのフィールド)で異なるサイズのLOBを、問題なく処理できます。ただし、このような柔軟性によって、SQL*Loaderで区切り文字列を探してデータをスキャンする必要があるため、パフォーマンスに影響します。
単一キャラクタのデリミタで、文字列のデリミタを指定する場合は、データ・ファイルのキャラクタ・セットに注意してください。データ・ファイルのキャラクタ・セットが制御ファイルのキャラクタ・セットと異なる場合は、デリミタを16進数の表記法で指定できます(X'hexadecimal
string
'
)。デリミタを実際に16進数の表記法で指定する場合は、入力データ・ファイルのキャラクタ・セット中の有効な文字で指定する必要があります。一方、16進数の表記法で指定しない場合、デリミタは、クライアント(制御ファイル)のキャラクタ・セットで指定してください。この場合、デリミタは、SQL*Loaderによってデータ・ファイル内で検索される前に、データ・ファイルのキャラクタ・セットに変換されます。
次の点に注意してください。
文字列デリミタを使用した区切り構文がサポートされます(囲みデリミタを区切りとします)。
マルチ・キャラクタの囲みデリミタの前に空白は入れられません。
フィールドがWHITESPACE
で終わる場合、先頭の空白は切り捨てられます。
注意:
SQL*LoaderによるCLOB
データ移動時のフィールドのデフォルト最大長は255バイトですが、最大2GBまでの値を指定できます。デリミタ付きフィールドでは、長さが指定されている場合、その長さが最大長として使用されます。値が指定されない場合、デフォルトは255バイトです。デリミタ付きで255バイトを超えるCHAR
フィールドの場合、最大長を指定する必要があります。CHAR
データ型の詳細は、「CHAR」を参照してください。
例11-16にデリミタ付きフィールドへのLOBデータのロードの例を示します。
例11-16 デリミタ付きフィールドのLOBデータのロード
制御ファイルの内容
LOAD DATA
INFILE 'sample.dat' "str '|'"
INTO TABLE person_table
FIELDS TERMINATED BY ','
(name CHAR(25),
1 "RESUME" CHAR(507) ENCLOSED BY '<startlob>' AND '<endlob>')
データ・ファイル(sample.dat)
Julia Nayer,<startlob> Julia Nayer
500 Example Parkway
jnayer@us.example.com ... <endlob>
2 |Bruce Ernst, .......
注意:
例の左に付けた太字の数字は、次の注意事項と対応しています。
<startlob>
および<endlob>
は、囲み文字列です。デフォルトのバイト長セマンティクスでは、CHAR(507)
を使用して読み込むことができるLOBの最大長は507バイトです。文字長セマンティクスが使用された場合、最大長は507文字になります。詳細は、「文字長セマンティクス」を参照してください
レコード・セパレータ'|'
は、<endlob>
のすぐ後にあり、その後に改行文字が続く場合、改行は、次のレコードの一部として解釈されます。代替方法は、レコード・セパレータに改行部分を作成することです(たとえば'|\n'
、または16進ではX'7C0A'
)。