¿Cómo puedo verificar que un archivo SQLite db3 sea válido / consistente

24

Tengo algunos archivos sqlite versión3 db3 que copié de un sistema de producción en vivo (sé mal sysadmin mal sysadmin) por varias razones. ¿Hay algún comando sqlite que pueda ejecutar que verifique que todos los datos se puedan leer de estos archivos (no me importa si lleva un tiempo).

Estaba considerando hackear algunos perl que vuelcan todos los datos y luego los vuelven a importar en nuevos archivos. Creo que sqlite lanzará una excepción si encuentra datos corruptos. ¿Hay una mejor manera?

Soy CentOS 5.3 y sqlite-3.3.6-2

hellomynameisjoel
fuente

Respuestas:

34

Creo que quieres probar:

pragma integrity_check;

De la documentación :

Este pragma realiza una comprobación de integridad de toda la base de datos. El pragma integridad_check busca registros fuera de servicio, páginas faltantes, registros con formato incorrecto, entradas de índice faltantes y errores de restricción ÚNICOS y NO NULOS. Si la pragma integridad_check encuentra problemas, se devuelven cadenas (como varias filas con una sola columna por fila) que describen los problemas. [...]

Vea también el comando PRAGMA quick_check que realiza la mayor parte de la verificación de PRAGMA INTEGMENTE_CHECK pero se ejecuta mucho más rápido.

hernan43
fuente
3
Ver también sqlite.org/faq.html#q21
Teddy