Как вы определяете, поврежден ли .sqlite или .sqback в Java?

Мне был предоставлен каталог каталогов, каждый из которых содержит коллекцию файлов .sqlite и .sqback, которые я должен анализировать.

Проблема в том, что я считаю, что некоторые из этих файлов повреждаются, когда я их получаю, потому что получаю сообщение об ошибке: ERR: [SQLITE_CORRUPT] Образ диска базы данных искажен (образ диска базы данных искажен) на моей консоли, когда я пытаюсь их обработать , Это происходит только с некоторыми файлами. Я выделил несколько и попытался запустить мою программу на свежих копиях этих плохих файлов по отдельности, и они вызывают ошибки. Большинство файлов прекрасно, хотя 🙂

Я понял, что есть вероятность, что я действительно могу получить коррумпированные файлы, чтобы начать с этого, поэтому я хотел бы определить способ, прежде чем пытаться их проанализировать, какие файлы хороши, а какие нет.

Я пишу на Java. Меня интересует только проверка sqlite и sqback, так как я знаю, что работает мой парсер. Я использую его повторно из предыдущего проекта.

Подсказка? Предложения? Ответы?

Большое спасибо за передачу знаний.

Solutions Collecting From Web of "Как вы определяете, поврежден ли .sqlite или .sqback в Java?"

Запустите PRAGMA quick_check как обычный SQL-запрос. Результат такой же, как таблица с одним столбцом, содержащая строки; Для неповрежденной базы данных вы получаете одну строку с надписью «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 

Нет никакой гарантии, что ошибки будут найдены.