GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So vergleichen Sie zwei SQLite-Datenbanken unter Linux

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

Linux
  1. Linux – Wie unterscheidet sich der Linux-Kernel von Mikrokernel-Architekturen?

  2. So vergleichen Sie den Inhalt zweier Tarballs

  3. Vergleichen Sie zwei Bilder auf Python/Linux-Weise

  4. Zwei Versionen von Python unter Linux. wie man 2.7 zum Standard macht

  5. Wie vergleiche ich Binärdateien in Linux?

Wie man Textdateien unter Linux vergleicht und zusammenführt (Teil 2)

So vergleichen Sie Verzeichnisse mit Meld unter Linux

Wie man It Takes Two unter Linux spielt

So zeigen Sie zwei Dateien nebeneinander in Linux an

So vergleichen Sie zwei Dateien im Linux-Terminal

So synchronisieren Sie zwei Webserver unter Linux automatisch