2016-11-04 4 views
0

私は2つのSQLファイルnew.sqlとold.sqlがあります。 New.sqlにはold.sqlという新しいテーブルがありますが、基本的に2つのSQLデータが異なります。 new.sqlに新しいテーブルがあれば、linuxで2つを比較する最良の方法は何ですか?それらのテーブルとそれらのテーブルのデータをold.sqlに追加します diff old.sql new.sql > diff.txtを使用しようとしましたが、違いをgrepしてしまいました。私はちょうどmysqlコマンドを使用せずに、freshmeat_linux/Linux]で2つのMySQLのSQLファイルを比較する

========== 
tableA 
========== 
col1 col2 
a1  a2 

========== 
tableB 
========== 
col1 col2 
b1  b2 

========== 
tableC 
========== 
col1 col2 
c1  c2 

new.sql old.sql new.sql

からold.sqlにデータK1、K2とtablek作成する方法を次のように

========== 
tableA 
========== 
col1 col2 
a11  a22 

========== 
tableB 
========== 
col1 col2 
x1  x2 

========== 
tableK 
========== 
col1 col2 
k1  k2 
+0

これはLinuxカーネルと何が関係がありますか? – Barmar

答えて

2

使用sedことだけを抽出しますファイルからのテーブル名。プロセス置換を使用して、new.sqlの行がold.sqlではないことを示すcommコマンドに引数として渡します。

comm -13 <(sed -n '/=======/,/=======/p old.sql | sort -u) <(sed -n '/=======/,/=======/p new.sql | sort -u) 
+0

しかし、情報のおかげで、私は新しいテーブルで余分なデータを挿入することができる何かを探しています。 – jacobcan118

+0

テーブル名を取得したら、mysqldumpを使ってそれらのテーブルを古いデータベースからダンプし、そのダンプファイルを新しいDBにロードすることができます。 – Barmar

関連する問題