GNU/Linux >> Linux の 問題 >  >> Linux

Linux で 2 つの SQLite データベースを比較する方法

2015 年 5 月 7 日にリリースされた SQLite Release 3.8.10 をご覧ください。このリリースには初めて sqldiff.exe が含まれています。 2 つの SQLite データベース ファイルの違いを計算するためのユーティリティ プログラム。おそらく、このプログラムは将来のリリースにも含まれるでしょう。

sqldiff.exe コマンドライン ライン ツールは、サポートされているすべてのオペレーティング システムで動作し、その出力動作を変更するためのいくつかのスイッチを提供します。使用例:

sqldiff [options] database1.sqlite database2.sqlite

オプションが指定されていない場合、sqldiff.exe の出力 database1.sqlite を変換する SQL ステートメントです。 (「ソース」データベース) を database2.sqlite に (「宛先」データベース)

ただし、特定の制限もあります。たとえば、sqldiff.exe ユーティリティ (少なくとも現在) は、TRIGGER、VIEW、または仮想テーブルの違いを表示しません。

コマンドと出力の例

シンプルなキー値ストア データベース (db1.sqlite) を使用しました。 ) を作成し、そのコピーを作成しました (db2.sqlite )。次に、1 つのキーと値のペアを db2.sqlite に挿入しました .その後、次のコマンドを実行しました:

sqldiff db1.sqlite db2.sqlite

次の出力が得られました:

<ブロック引用>

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;

テーブル my_table_size キーと値のペアが my_table に挿入された後、TRIGGER によって自動的に更新されました .次に、sqldiff.exe を実行しました 繰り返しますが、今回は db2.sqlite で 最初の引数として db1.sqlite 2 番目の引数として:

sqldiff db2.sqlite db1.sqlite

次の出力が得られました:

<ブロック引用>

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

sqldiff ダウンロード リンク

2016 年 1 月 20 日にリリースされた SQLite バージョン 3.10.2 以降、sqldiff の 32 ビット バイナリは SQLite ダウンロード ページから直接ダウンロードできます。それらは sqlite ツールにあります。 対応するオペレーティング システムのアーカイブ (プリコンパイル済みバイナリを参照) セクション)。たとえば、sqlite ツールへのリンクは次のとおりです。 バージョン 3.39.3 のアーカイブ:

  • Linux 用の SQLite ツール
  • OS X 用の SQLite ツール
  • Windows 用の SQLite ツール

バージョン 3.10.2 より前の SQLite バージョンの場合、SQLite Web サイトは sqldiff の 32 ビット バイナリをホストします。 、しかしそれらにリンクしません。 sqldiff へのリンクは次のとおりです。 バージョン 3.8.10 の:

  • Linux 用の sqldiff
  • OS X 用の sqldiff
  • Windows 用の sqldiff

64 ビットのバイナリが必要な場合は、生のソースをダウンロードして自分でコンパイルする必要があります。 (ファイル sqldiff.c ツールにあります ソースを含むアーカイブのサブディレクトリ)


1 つの可能性は、sqlite3 を使用することです。 コマンド ライン クライアントを使用して両方のデータベースをエクスポートし、出力を比較します。たとえば、

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

Linux
  1. Linux – Linuxカーネルはマイクロカーネルアーキテクチャとどのように比較されますか?

  2. 2 つの tarball のコンテンツを比較する方法

  3. Python/Linux の方法で 2 つの画像を比較する

  1. Linuxシェルスクリプトで数値と文字列を比較する方法

  2. SQLite DBブラウザ、Linuxにインストールして使用する方法

  3. Linux カーネルはマイクロカーネル アーキテクチャと比べてどうですか?

  1. Linuxで2つのテキストファイルを結合する方法

  2. Linux 上の 2 つのバージョンの Python。 2.7 をデフォルトにする方法

  3. Linux でバイナリ ファイルを比較するにはどうすればよいですか?