Frage Wie kann ich überprüfen, ob eine SQLite-db3-Datei gültig / konsistent ist?


Ich habe einige sqlite version3 db3-Dateien, die ich von einem live laufenden Produktionssystem kopiert habe (ich kenne schlechte sysadmin schlechte sysadmin) aus verschiedenen Gründen. Gibt es einen SQL-Befehl, den ich ausführen kann, der überprüft, dass alle Daten aus diesen Dateien gelesen werden können (es macht mir nichts aus, wenn es eine Weile dauert).

Ich erwog, ein paar Perl-Dateien zu hacken, die alle Daten aussortieren und dann wieder in neue Dateien importieren. Ich denke, dass sqlite eine Ausnahme auslöst, wenn es korrupte Daten trifft. Gibt es einen besseren Weg?

Ich bin CentOS 5.3 und sqlite-3.3.6-2


18
2018-05-14 01:32


Ursprung




Antworten:


Ich denke du willst es versuchen:

pragma integrity_check;

Von dem Dokumentation:

Dieses Pragma führt eine Integritätsprüfung der gesamten Datenbank durch. Das   Das Pragma integrity_check sucht nach Out-of-Order-Datensätzen, fehlenden Seiten,   fehlerhafte Datensätze, fehlende Indexeinträge und UNIQUE und NOT NULL   Beschränkungsfehler. Wenn das Pragma integrity_check Probleme findet,   Strings werden zurückgegeben (als mehrere Zeilen mit einer einzelnen Spalte pro Zeile)   welche beschreiben die Probleme. [...]

Siehe auch die PRAGMA quick_check Befehl, der die meisten der   Überprüfung von PRAGMA integrity_check, läuft aber viel schneller.


28
2018-05-14 01:41



Siehe auch sqlite.org/faq.html#q21 - Teddy