web-dev-qa-db-ja.com

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

さまざまな理由で、稼働中の運用システムからコピーしたsqlite version3 db3ファイルをいくつか持っています(悪いsysadmin悪いsysadminを知っています)。これらのファイルからすべてのデータを読み取ることができることを確認するために実行できるsqliteコマンドはありますか(時間がかかってもかまいません)。

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

私はCentOS 5.3とsqlite-3.3.6-2です

26

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

pragma integrity_check;

ドキュメント から:

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

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

35
hernan43