Як я можу перевірити, що файл SQLite db3 є дійсним / послідовним


24

У мене є кілька файлів sqlite version3 db3, які я скопіював із живої виробничої системи (я знаю поганий sysadmin поганий sysadmin) з різних причин. Чи є якась команда sqlite, яку я можу запустити, яка перевірить, чи всі дані можна прочитати з цих файлів (я не заперечую, якщо це займе певний час).

Я розглядав можливість зламати деякий Perl, який скидає всі дані, а потім повторно імпортує їх у нові файли. Я думаю, що sqlite видасть виняток, якщо він зіткнеться з пошкодженими даними. Чи є кращий спосіб?

Я CentOS 5.3 і sqlite-3.3.6-2

Відповіді:


34

Я думаю, ти хочеш спробувати:

pragma integrity_check;

З документації :

Ця прагма робить перевірку цілісності всієї бази даних. Прагма integ_check шукає записи поза порядком, відсутні сторінки, неправильно сформовані записи, відсутні записи в індексі, а також UNIQUE та NOT NULL обмеження. Якщо прагма integ_check знаходить проблеми, повертаються рядки (як кілька рядків з одним стовпцем на рядок), які описують проблеми. [...]

Дивіться також команду PRAGMA quick_check, яка робить більшу частину перевірки PR_MAcity_check, але працює набагато швидше.


3
Дивіться також sqlite.org/faq.html#q21
Тедді
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.