2つのSQLファイルがあり、1つはold.sql
ともう1つはnew.sql
。
と仮定しますold.sql
には、Emp_Id、Name、Addressの3つのフィールドと、old.sqlに次のように格納されたデータを含むテーブルが含まれています。
Insert into table1 values (101 ,"a", "xyz");
Insert into table1 values (102 ,"b", "pqr");
次に、「a」アドレス「xyz」を「xyz123」に変更し、そのデータをnew.sql
ファイル。今new.sql
ファイルには、次のようなデータが含まれています。
Insert into table1 values (101 ,"a", "xyz123");
Insert into table1 values (102 ,"b", "pqr");
次のようにdiff
コマンドを使用すると:
diff old.sql new.sql
行ごとに違いが出ますが、xyz123のように、更新されたデータのみが必要です。
wdiff
は、このタイプの比較に役立ちます。これは、単語ごとの比較を行うdiff
のフロントエンドです。あなたの例では、デフォルトで生成されます
Insert into table1 values (101 ,"a", [-"xyz");-] {+"xyz123");+}
Insert into table1 values (102 ,"b", "pqr");
端末機能を使用して、出力を端末で読みやすくすることができます(wdiff -t
)。また、出力を変更された単語のみに制限する-3
オプションもあります。
======================================================================
[-"xyz");-] {+"xyz123");+}
======================================================================
Wdiffをまだインストールしていない場合は、インストールする必要があります。 Sudo apt-get install wdiff
またはSudo dnf install wdiff
またはSudo yum install wdiff
またはオペレーティングシステムに適したコマンドを実行します。
以下を使用できます。
diff -u old.sql new.sql |colordiff |diff-highlight
colordiffはUbuntuパッケージです。 Sudo apt-get install colordiff
を使用してインストールできます。
diff-hight
はgitからのものです(バージョン2.9以降)。 /usr/share/doc/git/contrib/diff-highlight/diff-highlight
にあります。 $PATH
のどこかに置くことができます。または diff-so-fancy project から取得します。
定義により、diffは行ごとに差分を表示します(diffのマニュアルページを参照)。したがって、異なる文字だけが表示されるわけではありません。たとえば、各セミカラムの後に行末文字を挿入することにより、ファイルを前処理することにより、差異の量を減らすことができます。
sed -e 's/;/;\'$'\n/g' old.sql > old.patched
次に、2つの結果ファイルでdiffを使用します。