Come posso verificare che un file db3 di SQLite sia valido / coerente


24

Ho alcuni file sqlite versione3 db3 che ho copiato da un sistema di produzione in esecuzione dal vivo (conosco bad sysadmin bad sysadmin) per vari motivi. Esiste un comando sqlite che posso eseguire per verificare che tutti i dati possano essere letti da questi file (non mi dispiace se ci vorrà del tempo).

Stavo pensando di hackerare un po 'di perl che scarica tutti i dati e poi li reimporta in nuovi file. Penso che sqlite genererà un'eccezione se incontra dati corrotti. Esiste un modo migliore?

Sono CentOS 5.3 e sqlite-3.3.6-2

Risposte:


34

Penso che tu voglia provare:

pragma integrity_check;

Dalla documentazione :

Questo pragma esegue un controllo di integrità dell'intero database. Il pragma integral_check cerca record non ordinati, pagine mancanti, record non validi, voci di indice mancanti ed errori di vincolo UNIQUE e NOT NULL. Se il pragma integral_check rileva problemi, vengono restituite le stringhe (come più righe con una singola colonna per riga) che descrivono i problemi. [...]

Vedi anche il comando PRAGMA quick_check che esegue la maggior parte del controllo di PRAGMA integral_check ma viene eseguito molto più velocemente.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.