Назад | Перейти на главную страницу

Как я могу проверить, что файл SQLite db3 действителен / согласован

У меня есть файлы db3 sqlite version3, которые я скопировал из работающей производственной системы (я знаю, что плохой системный администратор плохой системный администратор) по разным причинам. Есть ли какая-нибудь команда sqlite, которую я могу запустить, которая проверит, что все данные могут быть прочитаны из этих файлов (я не возражаю, если это займет некоторое время).

Я подумывал о том, чтобы взломать какой-нибудь perl, который выгружает все данные, а затем повторно импортирует их в новые файлы. Я думаю, что sqlite выдаст исключение, если обнаружит поврежденные данные. Есть ли способ лучше?

Я CentOS 5.3 и sqlite-3.3.6-2

Думаю, вы хотите попробовать:

pragma integrity_check;

Из документация:

Эта прагма выполняет проверку целостности всей базы данных. Прагма Integrity_check ищет записи с нарушением порядка, отсутствующие страницы, искаженные записи, отсутствующие записи индекса и ошибки ограничения UNIQUE и NOT NULL. Если прагма Integration_check находит проблемы, возвращаются строки (как несколько строк с одним столбцом в строке), которые описывают проблемы. [...]

См. Также PRAGMA quick_check команда, которая выполняет большую часть проверки PRAGMA integration_check, но работает намного быстрее.