DELIMITED BY句を使用して、レコードの終わりを識別する文字を指定します。
DELIMITED BY NEWLINEを指定する場合、実際に使用される値はプラットフォームに依存します。UNIXプラットフォームでは、NEWLINEは「\n」です。Windowsオペレーティング・システムでは、NEWLINEは「\r\n」とみなされます。
DELIMITED BY stringを指定する場合、stringは、テキストまたは一連の16進数のいずれかになります。16進数の場合は、OXまたはXで開始して引用符で囲みます。テキストの場合は、データ・ファイルのキャラクタ・セットに変換され、その結果がレコードの境界の識別に使用されます。詳細は、「string」を参照してください。
次の条件を満たす場合は、デリミタの識別には16進数字を使用する必要があります。
アクセス・パラメータのキャラクタ・セットがデータ・ファイルのキャラクタ・セットとは異なる場合。
区切り文字列中にデータ・ファイルのキャラクタ・セットに変換できない文字がある場合。
16進数字はバイトに変換されます。16進文字列ではキャラクタ・セットの変換は実行されません。
ファイルの終わりがレコード終了記号の前で検出された場合、アクセス・ドライバは、終了記号が検出された場合と同様に、ファイルの終わりまでの処理されていないすべてのデータをレコードの部分とみなします。
注意:
デリミタ付きのレコードには、VARCHARおよびVARRAWのバイナリ数値を含むバイナリ・データを含めないでください。バイナリ・データを含めると、そのバイナリ・データがデリミタの検索中に文字として解釈されるため、エラーまたは破損が発生します。
次に、DELIMITED BYレコードの使用例を示します。
CREATE TABLE emp_load (first_name CHAR(15), last_name CHAR(20), year_of_birth CHAR(4))
ORGANIZATION EXTERNAL (TYPE ORACLE_LOADER DEFAULT DIRECTORY ext_tab_dir
ACCESS PARAMETERS (RECORDS DELIMITED BY '|' FIELDS TERMINATED BY ','
(first_name CHAR(7),
last_name CHAR(8),
year_of_birth CHAR(4)))
LOCATION ('info.dat'));
Alvin,Tolliver,1976|Kenneth,Baer,1963|Mary,Dube,1973