BAD ファイル形式とは?
.badファイルは Oracle SQL*Loader Badファイルです。これは、Oracleデータベースへの一括データロード中に SQL*Loader が行を拒否したときに書き出されるプレーンテキストの出力ファイルです。
このファイルには、ロードできなかったすべての行の逐次コピーが、元の入力(CSV、固定長、またはストリーム)と同じ形式で含まれています。内容がソースを正確に反映しているため、修正した行を再フォーマットすることなく、同じ .ctl コントロールファイルを使用して sqlldr に直接戻すことができます。これにより、.badファイルは単なるエラーログではなく、「修理して再試行」するための成果物となります。
レコードが .badファイルに送られる理由は主に3つあります:
- 行が Oracle の制約(一意キーの重複、
NOT NULL制約違反など)に違反している。 - SQL*Loader が、不正な形式の区切り行のフィールド境界を解析できない。
- フィールド値をターゲット列のデータ型に変換できない。
.badファイルは .dsc(廃棄)ファイルとは異なります。廃棄ファイルは、コントロールファイルの WHEN 句によって意図的にスキップされた行であり、ロードは試行されませんでした。Badレコードは、ロードを試行して失敗したものです。
すべての入力行が正常にロードされた場合、.badファイルは作成されません。デフォルトの名前は入力データファイルから派生します(例:data.csv → data.bad)。ただし、コントロールファイルの BADFILE= またはコマンドラインの BAD= で上書きされている場合は除きます。
SQL*Loader は、バージョン6(1988年)から Oracle Database の一部であり、現在の Oracle Database 23ai リリースでもコアユーティリティとして残っています。
セキュリティと安全性
リスク: LOWプレーンテキストデータファイルであり、実行は不可能です。失敗したインポートからの機密性の高いビジネスデータ(個人情報、財務記録)が含まれている可能性があるため、適切に取り扱い、許可された DBA および ETL オペレータにファイルシステムへのアクセスを制限してください。
形式の詳細
概要- Microsoft Exchange Server 不正メッセージファイル - Exchange SMTP トランスポートは、配信不能または不正な形式のメッセージを Exchange キューディレクトリに .BADファイルとして保存します。
- 一般的な「不正データ」マーカー(各種アプリケーション) - 一部の ETL ツールやレガシープログラムは、エラー/拒否出力ファイルの汎用拡張子として .bad を使用します。
BAD ファイルを開くプログラム
技術的詳細
詳細仕様| フォーマットタイプ | プレーンテキストの拒否行ミラー(SQL*Loader 入力データファイルと同じ構造) |
| エンコーディング | 入力データファイルと一致 - コントロールファイルで構成された ASCII、UTF-8、または Oracle NLS 文字セット |
| 内容 | SQL*Loader の実行中に拒否されたすべての行の、元の入力形式での逐次コピー |
| 拒否の理由 | Oracle 制約違反(PK/UK/NOT NULL)、解析不能なフィールド区切り文字、データ型変換の失敗 |
| LOBデータの処理 | LOBFILE または SDF ソースからの LOB コンテンツは、その行が拒否されたときに .badファイルには書き込まれません |
| デフォルトのファイル名 | <input_datafile_basename>.bad (例: data.csv → data.bad) |
| ファイル名の上書き | .ctl コントロールファイルの BADFILE=、または sqlldr コマンドラインの BAD= |
| ファイルの作成 | 少なくとも1行が拒否された場合にのみ作成されます。完全に成功したロードでは作成されません |
| .dscとの区別 | .dsc(廃棄)は WHEN 句によってスキップされた行(意図的なスキップでありエラーではない)を保持し、.bad は挿入に失敗した行を保持します |
| 再利用ワークフロー | 修正された .badファイルは、再フォーマットなしで同じ .ctl コントロールファイルを使用して直接再ロード可能 |
| プラットフォームサポート | すべての Oracle Database プラットフォーム:Linux、Unix、Windows、Solaris、AIX |
| リリース日 | Oracle 7 era, circa 1992 (SQL*Loader has existed since Oracle 6, 1988) |
| 最新バージョン | N/A - format is defined by the input data format; no versioning |
| 仕様書 | docs.oracle.com |
BAD の変換
コミュニティ Q&A
ユーザーからの質問まだ質問はありません。BAD ファイルについて最初の質問をしてみましょう。