it-swarm-es.com

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

Tengo algunos archivos sqlite versión3 db3 que copié de un sistema de producción en vivo (sé que un sysadmin malo es un sysadmin malo) 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

26
hellomynameisjoel

Creo que quieres probar:

pragma integrity_check;

Del documentación :

Este pragma realiza una verificació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.

35
hernan43