7.7 SQL*Loaderの廃棄レコードと拒否レコード
SQL*Loaderは入力ファイルから読み込まれ一部のレコードを拒否または破棄できます。これは、ファイルの問題のため、またはロードからレコードをフィルタ処理することを選択したためです。
拒否レコードは不良ファイルに格納され、廃棄レコードは廃棄ファイルに格納されます。
- SQL*Loader不良ファイル
不良ファイルには、SQL*LoaderまたはOracle Databaseによって拒否レコードが書き込まれます。 - SQL*Loader廃棄ファイル
SQL*Loaderの実行時に、一部のレコードがロードから除外されるようにして、廃棄ファイルというファイルが作成されるようにすることもできます。
親トピック: SQL*Loaderの使用方法の理解
7.7.1 SQL*Loader不良ファイル
不良ファイルには、SQL*LoaderまたはOracle Databaseによって拒否レコードが書き込まれます。
不良ファイルを指定していない場合に拒否されたレコードがあると、SQL*Loaderによって不良ファイルが自動的に作成されます。拒否レコードはデータ・ファイルと同じ名前になりますが、拡張子.badが付きます。拒否には、いくつかの原因があります。
- SQL*Loaderによって拒否されたレコード
入力形式が不適切なデータ・ファイル・レコードは、SQL*Loaderによって拒否されます。 - SQL*Loaderの操作中にOracle Databaseによって拒否されたレコード
データ・ファイル・レコードは、SQL*Loaderによって受け取られた後、データベースに送られ、行として表に挿入されます。
親トピック: SQL*Loaderの廃棄レコードと拒否レコード
7.7.1.1 SQL*Loaderによって拒否されたレコード
入力形式が不適切なデータ・ファイル・レコードは、SQL*Loaderによって拒否されます。
たとえば、2番目の囲みデリミタがない場合や、デリミタ付きフィールドが最大長を超えている場合、レコードは、SQL*Loaderによって拒否されます。拒否レコードは、不良ファイルに書き込まれます。
親トピック: SQL*Loader不良ファイル
7.7.1.2 SQL*Loaderの操作中にOracle Databaseによって拒否されたレコード
データ・ファイル・レコードは、SQL*Loaderによって受け取られた後、データベースに送られ、行として表に挿入されます。
データベースによって有効であると判断された行は、表に挿入されます。行が無効であると判断された場合、レコードは拒否され、SQL*Loaderにより不良ファイルに書き込まれます。行が無効であると判断される例としては、キーが重複している場合、必須入力フィールドに対応するデータがNULL値の場合、またはフィールドにOracleデータ型ではないデータ型が指定された場合が考えられます。
親トピック: SQL*Loader不良ファイル
7.7.2 SQL*Loader廃棄ファイル
SQL*Loaderの実行時に、一部のレコードがロードから除外されるようにして、廃棄ファイルというファイルが作成されるようにすることもできます。
廃棄ファイルが作成されるのは、廃棄ファイルが必要な場合と、廃棄ファイルを有効にするように指定した場合のみです。廃棄ファイルには、制御ファイルに指定されているレコード選択基準に一致しなかったため、ロード対象から除外されたレコードが入ります。
廃棄ファイルにはロードから除外されたレコードが格納されているため、廃棄ファイルの内容はデータベースのどの表にも挿入されなかったレコードになります。廃棄ファイルに格納可能なレコードの最大数を指定できます。レコードのデータがいずれかの表に書き込まれる場合、このレコードは廃棄ファイルには書き込まれません。
親トピック: SQL*Loaderの廃棄レコードと拒否レコード