Bitte werfen Sie einen Blick auf das SQLite Release 3.8.10, das am 7. Mai 2015 veröffentlicht wurde. Dieses Release enthält erstmals die sqldiff.exe Dienstprogramm zum Berechnen der Unterschiede zwischen zwei SQLite-Datenbankdateien. Höchstwahrscheinlich wird dieses Programm auch Teil zukünftiger Versionen sein.
Die sqldiff.exe Befehlszeilentool sollte für alle unterstützten Betriebssysteme funktionieren und bietet mehrere Schalter zum Ändern des Ausgabeverhaltens. Beispielverwendung:
sqldiff [options] database1.sqlite database2.sqlite
Wenn keine Optionen angegeben sind, dann die Ausgabe von sqldiff.exe sind SQL-Anweisungen, die database1.sqlite
umwandeln (die "Quell"-Datenbank) in database2.sqlite
(die „Ziel“-Datenbank).
Allerdings gibt es auch gewisse Einschränkungen. Beispiel:sqldiff.exe zeigt (zumindest derzeit) keine Unterschiede in TRIGGERs, VIEWs oder virtuellen Tabellen an.
Beispielbefehl und -ausgabe
Ich habe eine einfache Key-Value-Store-Datenbank (db1.sqlite
) und eine Kopie davon erstellt (db2.sqlite
). Dann habe ich ein Schlüssel-Wert-Paar in db2.sqlite
eingefügt . Danach habe ich den folgenden Befehl ausgeführt:
sqldiff db1.sqlite db2.sqlite
und bekam folgende Ausgabe:
INSERT INTO my_table(rowid,"key",value) VALUES(1,'D:\Test\Test.txt',x'aabbccdd');
UPDATE my_table_size SET counter=1 WHERE rowid=1;
Die Tabelle my_table_size
wurde automatisch durch einen TRIGGER aktualisiert, nachdem das Schlüssel-Wert-Paar in my_table
eingefügt wurde . Ich habe dann sqldiff.exe ausgeführt wieder, aber diesmal mit db2.sqlite
als erstes Argument und db1.sqlite
als zweites Argument:
sqldiff db2.sqlite db1.sqlite
und bekam folgende Ausgabe:
DELETE FROM my_table WHERE rowid=1;
UPDATE my_table_size SET counter=0 WHERE rowid=1;
sqldiff-Download-Links
Seit der SQLite-Version 3.10.2, die am 20. Januar 2016 veröffentlicht wurde, sind die 32-Bit-Binärdateien für sqldiff kann direkt von der SQLite-Download-Seite heruntergeladen werden. Sie können in den sqlite-Tools gefunden werden Archive für die entsprechenden Betriebssysteme (siehe Precompiled Binaries Abschnitte). Hier sind zum Beispiel die Links zu den sqlite-Tools Archiv der Version 3.39.3:
- SQLite-Tools für Linux
- SQLite-Tools für OS X
- SQLite-Tools für Windows
Für SQLite-Versionen vor Version 3.10.2 hostet die SQLite-Website 32-Bit-Binärdateien für sqldiff , verlinkt aber nicht darauf. Hier sind die Links zu sqldiff der Version 3.8.10:
- sqldiff für Linux
- sqldiff für OS X
- sqldiff für Windows
Wenn Sie 64-Bit-Binärdateien benötigen, müssen Sie die Rohquellen herunterladen und selbst kompilieren. (Die Datei sqldiff.c befindet sich im Tool Unterverzeichnis des Archivs mit den Quellen.)
Eine Möglichkeit ist die Verwendung des sqlite3
Befehlszeilenclient, um beide Datenbanken zu exportieren und dann die Ausgabe zu vergleichen. Zum Beispiel
sqlite3 first.sqlite .dump >first.dump
sqlite3 second.sqlite .dump >second.dump
diff first.dump second.dump