PHPを使用してファイルデータを処理するために、テキストファイルを空のsqliteデータベースに解析しています。私はデータベース接続を確立します:
try {
$db = new PDO('sqlite:temp.db');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
die($error);
}
ユーザー ファイル データは大きく、順序付けされておらず、複数の内部外部キー依存関係があるため、外部キーで DEFERRABLE INITIALLY DEFERRED を使用して、データを単一のトランザクションとして挿入します。元の入力データが正しい限り、これはうまく機能します。ユーザー入力エラーが発生すると、トランザクション全体に対して 1 つの一般的な例外が発生します (もちろん、その後ロールバックされます)。ユーザー エラーは、未定義の外部キー参照として現れることがよくありますが、これだけではありません。
ユーザー入力エラーを追跡するのに役立つ、例外を引き起こしたトランザクション内の個々の挿入ステートメント、または欠落していた特定の外部キーなど、より多くの情報を取得する方法を誰かが提案できますか?
ユーザー入力データには順序がなく、そのデータはその構造が複雑であるため、コミット前に検証することが非常に複雑になるため、可能であればその側面を手動でコーディングすることは避けたいと考えています。