SQL*Loaderでカンマ区切り値形式のファイルであるデータ・ファイルにアクセスするには、CSV
句を使用します。これによって、ファイルは、通常の改行文字列(たとえば、UNIXまたはLinuxオペレーティング・システムの場合は\n
、Windowsオペレーティング・システムの場合は\n
または\r\n
)を含むストリーム・レコード形式のファイルであるとみなされます。データ値にはレコード終了記号含める(埋め込む)ことができます。CSV
句の構文は次のとおりです。
FIELDS CSV [WITH EMBEDDED|WITHOUT EMBEDDED] [FIELDS TERMINATED BY ','] [OPTIONALLY ENCLOSED BY '"']
FIELDS
CSV
句の主なポイントは次のとおりです。
SQL*Loaderのデフォルトでは、FIELDS
CSV
句を使用しません。
WITH
EMBEDDED
およびWITHOUT
EMBEDDED
オプションでは、データのフィールド内にレコード終了記号が含まれている(埋め込まれている)かどうかを指定します。
WITH
EMBEDDED
を使用する場合、埋込みのレコード終了記号は囲む必要があり、データ・ファイル内の並列度は外部表ロードでは無効になります。
TERMINATED BY ','
およびOPTIONALLY ENCLOSED BY '"'
オプションはデフォルトのため、指定する必要はありません。これらは別の終了記号や囲み文字で上書きできます。
CSV
句を使用する場合、区切ることが可能なデータ型のみが制御ファイルのフィールドとして許可されます。区切ることが可能なデータ型には、CHAR
、日時、期間および数値型EXTERNAL
が含まれます。
CSV句を指定する場合、TERMINATED
BY
およびENCLOSED
BY
句は、フィールド・レベルでは使用できません。
CSV
句を指定すると、通常のSQL*Loaderの空白の切捨てがデフォルトで実行されます。PRESERVE
BLANKS
を指定すると、空白の切捨てを回避できます。または、フィールド指定でSQL関数のLTRIM
およびRTRIM
を使用すると、左側または右側(あるいはその両方)の空白を削除できます。
CSV
句を指定する場合、INFILE *
句は使用できません。つまり、SQL*Loader制御ファイルに含まれているデータは使用できません。
次のサンプルSQL*Loader制御ファイルでは、デフォルトのデリミタでFIELDS
CSV
句を使用しています。
LOAD DATA INFILE "mydata.dat" TRUNCATE INTO TABLE mytable FIELDS CSV WITH EMBEDDED TRAILING NULLCOLS ( c0 char, c1 char, c2 char, )