GNU/Linux >> Linux Esercitazione >  >> Linux

Come confrontare due database SQLite su Linux

Dai un'occhiata alla versione 3.8.10 di SQLite rilasciata il 7 maggio 2015. Questa versione contiene per la prima volta sqldiff.exe programma di utilità per calcolare le differenze tra due file di database SQLite. Molto probabilmente anche questo programma farà parte delle versioni future.

sqldiff.exe lo strumento della riga di comando dovrebbe funzionare per tutti i sistemi operativi supportati e offre diverse opzioni per alterare il suo comportamento di output. Esempio di utilizzo:

sqldiff [options] database1.sqlite database2.sqlite

Se non viene specificata alcuna opzione, l'output di sqldiff.exe è istruzioni SQL che trasformeranno database1.sqlite (il database "fonte") in database2.sqlite (il database "destinazione").

Tuttavia, ci sono anche alcune limitazioni. Ad esempio, sqldiff.exe utility (almeno attualmente) non mostra differenze nei TRIGGER, nelle VIEW o nelle tabelle virtuali.

Comando e output di esempio

Ho preso un semplice database del negozio di valori-chiave (db1.sqlite ) e ne ho fatto una copia (db2.sqlite ). Ho quindi inserito una coppia chiave-valore in db2.sqlite . Successivamente ho eseguito il seguente comando:

sqldiff db1.sqlite db2.sqlite

e ha ottenuto il seguente output:

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;

La tabella my_table_size è stato aggiornato automaticamente da un TRIGGER dopo che la coppia chiave-valore è stata inserita in my_table . Ho quindi eseguito sqldiff.exe di nuovo, ma questa volta con db2.sqlite come primo argomento e db1.sqlite come secondo argomento:

sqldiff db2.sqlite db1.sqlite

e ha ottenuto il seguente output:

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

link per il download di sqldiff

A partire dalla versione 3.10.2 di SQLite, rilasciata il 20 gennaio 2016, i file binari a 32 bit per sqldiff può essere scaricato direttamente dalla pagina di download di SQLite. Possono essere trovati negli strumenti sqlite archivi per i sistemi operativi corrispondenti (consulta i file Binari precompilati sezioni). Ad esempio, ecco i collegamenti agli strumenti sqlite archivi della versione 3.39.3:

  • Strumenti SQLite per Linux
  • Strumenti SQLite per OS X
  • Strumenti SQLite per Windows

Per le versioni di SQLite precedenti alla versione 3.10.2, il sito web di SQLite ospita file binari a 32 bit per sqldiff , ma non si collega ad essi. Ecco i collegamenti a sqldiff della versione 3.8.10:

  • sqldiff per Linux
  • sqldiff per OS X
  • sqldiff per Windows

Se hai bisogno di binari a 64 bit, devi scaricare i sorgenti grezzi e compilarli da solo. (Il file sqldiff.c si trova nello strumento sottodirectory dell'archivio contenente i sorgenti.)


Una possibilità è usare il sqlite3 client della riga di comando per esportare entrambi i database e quindi eseguire il diff dell'output. Ad esempio,

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

Linux
  1. Come confrontare numeri e stringhe nello script della shell di Linux

  2. Confronta due immagini in modo python/linux

  3. Due versioni di Python su Linux. come rendere 2.7 il valore predefinito

  4. Come posso confrontare i file binari in Linux?

  5. Come si confronta la riga di comando di Mac con Linux?

Come confrontare e unire file di testo su Linux (parte 2)

Come confrontare le directory con Meld su Linux

Come giocare a It Takes Two su Linux

Come visualizzare due file affiancati in Linux

Come confrontare due file nel terminale Linux

Come sincronizzare automaticamente due server Web in Linux