8

解析する必要がある .sqlite ファイルと .sqback ファイルのコレクションをそれぞれ含むディレクトリのディレクトリが与えられました。

問題は、これらのファイルを処理しようとすると、コンソールで次のエラーが表示されるため、これらのファイルの一部が破損していると思われることです。 . これは、一部のファイルでのみ発生します。いくつかを分離し、これらの不良ファイルの新しいコピーでプログラムを個別に実行しようとしたところ、エラーが発生しました。ただし、ほとんどのファイルは問題ありません:)

そもそも破損したファイルが実際に与えられる可能性があることに気付いたので、それらを解析する前に、どのファイルが適切でどのファイルがそうでないかを判断する方法が必要です.

私はJavaで書いています。パーサーが機能することを知っているので、sqlite と sqback の検証にのみ関心があります。以前のプロジェクトから再利用しています。

ヒント?提案?答えは?

知識の伝達に感謝します。

4

2 に答える 2

5

PRAGMA quick_check通常の SQL クエリのように実行します。結果は、文字列を含む 1 列のテーブルと同じになります。無傷のデータベースの場合、「OK」という単一の行が表示され、破損したデータベースの場合、一連のエラー メッセージが表示されます。

sqlite> pragma quick_check;
ok

ファイル内のいくつかのバイトを変更した後:

sqlite> pragma quick_check;
*** in database main ***
Page 64: btreeInitPage() returns error code 11
On tree page 40 cell 23: Child page depth differs
On tree page 40 cell 24: Child page depth differs

これによりエラーが発見される保証はありません。

于 2012-09-14T16:34:27.193 に答える