GNU/Linux >> Tutoriels Linux >  >> Linux

Comment comparer deux bases de données SQLite sous Linux

Veuillez consulter la version 3.8.10 de SQLite qui a été publiée le 7 mai 2015. Cette version contient pour la première fois le sqldiff.exe programme utilitaire pour calculer les différences entre deux fichiers de base de données SQLite. Très probablement, ce programme fera également partie des versions futures.

Le sqldiff.exe L'outil de ligne de commande devrait fonctionner pour tous les systèmes d'exploitation pris en charge et propose plusieurs commutateurs pour modifier son comportement de sortie. Exemple d'utilisation :

sqldiff [options] database1.sqlite database2.sqlite

Si aucune option n'est spécifiée, la sortie de sqldiff.exe est des instructions SQL qui transformeront database1.sqlite (la base de données "source") en database2.sqlite (la base de données "destination").

Cependant, il existe également certaines limitations. Par exemple, le sqldiff.exe l'utilitaire (du moins actuellement) n'affiche pas les différences dans les déclencheurs, les vues ou les tables virtuelles.

Exemple de commande et de sortie

J'ai pris une simple base de données de magasin clé-valeur (db1.sqlite ) et en a fait une copie (db2.sqlite ). J'ai ensuite inséré une paire clé-valeur dans db2.sqlite . Après cela, j'ai exécuté la commande suivante :

sqldiff db1.sqlite db2.sqlite

et a obtenu le résultat suivant :

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 ;

Le tableau my_table_size a été automatiquement mis à jour par un TRIGGER après l'insertion de la paire clé-valeur dans my_table . J'ai ensuite exécuté sqldiff.exe encore une fois, mais cette fois avec db2.sqlite comme premier argument et db1.sqlite comme second argument :

sqldiff db2.sqlite db1.sqlite

et a obtenu le résultat suivant :

DELETE FROM my_table WHERE rowid=1 ;
UPDATE my_table_size SET counter=0 WHERE rowid=1 ;

liens de téléchargement sqldiff

Depuis la version 3.10.2 de SQLite qui a été publiée le 20 janvier 2016, les binaires 32 bits pour sqldiff peut être directement téléchargé à partir de la page de téléchargement SQLite. Ils peuvent être trouvés dans les outils sqlite archives pour les systèmes d'exploitation correspondants (voir les binaires précompilés sections). Par exemple, voici les liens vers les outils sqlite archives de la version 3.39.3 :

  • Outils SQLite pour Linux
  • Outils SQLite pour OS X
  • Outils SQLite pour Windows

Pour les versions SQLite antérieures à la version 3.10.2, le site Web SQLite héberge des binaires 32 bits pour sqldiff , mais ne les relie pas. Voici les liens vers sqldiff de la version 3.8.10 :

  • sqldiff pour Linux
  • sqldiff pour OS X
  • sqldiff pour Windows

Si vous avez besoin de binaires 64 bits, vous devez télécharger les sources brutes et les compiler vous-même. (Le fichier sqldiff.c se trouve dans l'outil sous-répertoire de l'archive contenant les sources.)


Une possibilité est d'utiliser le sqlite3 client de ligne de commande pour exporter les deux bases de données, puis différencier la sortie. Par exemple,

sqlite3 first.sqlite .dump >first.dump
sqlite3 second.sqlite .dump >second.dump
diff first.dump second.dump

Linux
  1. Comment comparer des nombres et des chaînes dans le script shell Linux

  2. Comment comparer le contenu de deux archives tar

  3. Comparez deux images à la manière python/linux

  4. Comment configurer deux routes par défaut sous Linux

  5. Comment le noyau Linux se compare-t-il aux architectures de micro-noyau ?

Comment comparer et fusionner des fichiers texte sous Linux (partie 2)

Comment comparer des répertoires avec Meld sous Linux

Comment jouer à It Takes Two sur Linux

Comment afficher deux fichiers côte à côte sous Linux

Comment comparer deux fichiers dans un terminal Linux

Comment synchroniser automatiquement deux serveurs Web sous Linux