SQLite db3ファイルが有効/一貫性があることを確認するにはどうすればよいですか


24

さまざまな理由で、稼働中の実稼働システム(不正なシステム管理者、不正なシステム管理者を知っています)からコピーしたいくつかのsqliteバージョン3 db3ファイルがあります。これらのファイルからすべてのデータを読み取ることができることを確認するために実行できるいくつかのsqliteコマンドがあります(時間がかかるかどうかは気にしません)。

すべてのデータをダンプし、それを新しいファイルに再インポートするperlをハックすることを検討していました。破損したデータに遭遇すると、sqliteは例外をスローすると思います。もっと良い方法はありますか?

私はCentOS 5.3およびsqlite-3.3.6-2です。

回答:


34

あなたが試してみたいと思う:

pragma integrity_check;

ドキュメントから:

このプラグマは、データベース全体の整合性チェックを行います。integrity_checkプラグマは、順不同のレコード、欠落したページ、不正なレコード、欠落したインデックスエントリ、UNIQUEおよびNOT NULL制約エラーを探します。integrity_checkプラグマが問題を検出した場合、問題を説明する文字列が返されます(行ごとに1列の複数行として)。[...]

PRAGMA integrity_checkのほとんどのチェックを実行しますが、はるかに高速に実行されるPRAGMA quick_checkコマンドも参照してください。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.