GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana membandingkan dua database SQLite di Linux

Silakan lihat Rilis SQLite 3.8.10 yang dirilis pada 7 Mei 2015. Rilis ini untuk pertama kalinya berisi sqldiff.exe program utilitas untuk menghitung perbedaan antara dua file database SQLite. Kemungkinan besar program ini juga akan menjadi bagian dari rilis mendatang.

sqldiff.exe alat baris perintah harus berfungsi untuk semua sistem operasi yang didukung dan menawarkan beberapa sakelar untuk mengubah perilaku keluarannya. Contoh penggunaan:

sqldiff [options] database1.sqlite database2.sqlite

Jika tidak ada opsi yang ditentukan, maka output dari sqldiff.exe adalah pernyataan SQL yang akan mengubah database1.sqlite (database "sumber") ke dalam database2.sqlite (database "tujuan").

Namun, ada juga batasan tertentu. Misalnya, sqldiff.exe utilitas (setidaknya saat ini) tidak menampilkan perbedaan dalam TRIGGER, VIEW, atau tabel virtual.

Contoh perintah dan keluaran

Saya mengambil database penyimpanan nilai kunci sederhana (db1.sqlite ) dan membuat salinannya (db2.sqlite ). Saya kemudian memasukkan satu pasangan nilai kunci ke db2.sqlite . Setelah itu saya menjalankan perintah berikut:

sqldiff db1.sqlite db2.sqlite

dan mendapatkan output berikut:

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;

Tabel my_table_size secara otomatis diperbarui oleh TRIGGER setelah key-value pair dimasukkan ke my_table . Saya kemudian menjalankan sqldiff.exe lagi, tapi kali ini dengan db2.sqlite sebagai argumen pertama dan db1.sqlite sebagai argumen kedua:

sqldiff db2.sqlite db1.sqlite

dan mendapatkan output berikut:

HAPUS DARI my_table WHERE rowid=1;
UPDATE my_table_size SET counter=0 WHERE rowid=1;

tautan unduhan sqldiff

Sejak SQLite versi 3.10.2 yang dirilis pada 20 Januari 2016, binari 32-bit untuk sqldiff dapat langsung diunduh dari Halaman Unduhan SQLite. Mereka dapat ditemukan di alat sqlite arsip untuk sistem operasi yang sesuai (lihat Biner Terkompilasi bagian). Misalnya, berikut adalah tautan ke alat sqlite arsip versi 3.39.3:

  • Alat SQLite untuk Linux
  • Alat SQLite untuk OS X
  • Alat SQLite untuk Windows

Untuk versi SQLite sebelum versi 3.10.2, situs web SQLite menghosting binari 32-bit untuk sqldiff , tetapi tidak terhubung ke mereka. Berikut tautan ke sqldiff versi 3.8.10:

  • sqldiff untuk Linux
  • sqldiff untuk OS X
  • sqldiff untuk Windows

Jika Anda memerlukan binari 64-bit, maka Anda harus mengunduh sumber mentah dan mengompilasinya sendiri. (Berkas sqldiff.c terletak di alat sub-direktori arsip yang berisi sumber.)


Salah satu kemungkinannya adalah dengan menggunakan sqlite3 klien baris perintah untuk mengekspor kedua database dan kemudian membedakan hasilnya. Misalnya,

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

Linux
  1. Bagaimana Membandingkan Angka dan String di Linux Shell Script

  2. SQLite DB Browser, Cara Menginstal dan Menggunakannya di Linux

  3. Cara mengatur dua rute default di linux

  1. Cara Menggabungkan Dua File Teks di Linux

  2. Linux – Bagaimana Kernel Linux Dibandingkan Dengan Arsitektur Mikrokernel?

  3. Bagaimana membandingkan dua konten tarball

  1. Bandingkan dua gambar dengan cara python/linux

  2. Dua versi python di linux. bagaimana menjadikan 2.7 sebagai default

  3. Bagaimana cara membandingkan file biner di Linux?