web-dev-qa-db-fra.com

Comment puis-je vérifier qu'un fichier sqlite db3 est valide / cohérent

J'ai des fichiers SQLite Version3 DB3 J'ai copié un système de production en direct (je connais Bad Sysadmin Bad Sysadmin) pour diverses raisons. Y a-t-il une commande sqlite que je peux exécuter qui vérifiera que toutes les données peuvent être lues de ces fichiers (cela ne vous dérange pas si cela prend un moment).

J'avais envisagé de pirater certains Perl qui décharge toutes les données, puis la réapplique dans de nouveaux fichiers. Je pense que SQLite lancera une exception si elle rencontre des données corrompues. Y a-t-il une meilleure façon?

Je suis Centos 5.3 et SQLite-3.3.6-2

26

Je pense que tu veux essayer:

pragma integrity_check;

Du Documentation :

Ce pragma fait une vérification d'intégrité de l'ensemble de la base de données. L'intégrité_Check Pragma recherche des enregistrements hors command, des pages manquantes, des enregistrements mal formés, des entrées d'index manquantes et des erreurs de contrainte uniques et non nuls. Si l'intégrité_Check Pragma trouve des problèmes, les chaînes sont renvoyées (en tant que lignes multiples avec une seule colonne par ligne) décrivant les problèmes. [...]

Voir aussi la commande pragma Quick_check commande qui fait la plupart des vérifications de Pragma Integrity_Check, mais fonctionne beaucoup plus rapidement.

35
hernan43