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, )