バックエンド

【DataGrip】IntelliJ IDEAを使ってDBの差分を取ってみよう!【データベース】

intellij-db-migration
野田竣介

今回はこのような質問をいただきました。

効率的にデータベースの差分を取る方法ないかな?

普通にDBの差分取ろうと思うと結構大変なんですよね。

そこで今回はこちらの質問について解説していきます!

環境
  • IntelliJ IDEA Ultimate 2019.2

IntelliJ IDEA 14まではもう少し使いやすかったのですが、アップデートで使いにくくなってしまいました…
しばらくは差分をとるためだけにIntelliJ IDEA 14を入れていましたが、Macのアップデートの影響か動作しなくなってしまいました(笑)

差分をとってみよう!

この方法はDataGripでも使えると思います!

実際に差分を取ってみます。

簡単に差分をとれるのでかなり便利!

今回はsample1とsample2という名前のデータベースを用意しました。

sample1にのみtestというテーブルを作成し、sample2はそのまま使用します。

この2つのデータベースの差分を取りたいと思います。

DBに接続する

まずはIntelliJ IDEAから差分を取りたい2つのデータベースに接続します。

DBに接続する

①プロジェクトを開くと右側に「Database」というタブが表示されていると思います。

②そこからデータベースのタブを開き、+ボタンの「Data Source」からデータベースを追加します。

③私はMySQLを使用しているので「MySQL」を選択しました。

次に設定画面で接続先情報を入力します。

設定画面

「Test Connection」を押してみて問題なければOK!

同様にもう1つのDBも登録しておきます。

Diff画面を表示する

差分をとるための画面を表示します。

schemaを選択

接続したDBの項目を展開していくとスキームが表示されます。

差分をとりたいスキームを選択します。

commandキーを押しながら選択することで複数選択できます。

2つのスキームを選択した状態で command + D でDiff画面を表示できます。

Diff画面

この画面が表示されたらOK!

差分を表示する

画面上部に表示されている「→」、「≠」、「←」を選択します。

その後、「Migrate Left」または「Migrate Right」を選択することで差分を表示できます。

Migrate Left
Migrate Right

ここで表示されたSQL文を対象のDBで実行することで同じ状態にすることができます。

私の場合は以下のような状態になります。

  • Migrate Leftで表示されたSQL文をsample1で実行 → sample1がsample2と同じ環境になる
  • Migrate Rightで表示されたSQL文をsample2で実行 → sample2がsample1と同じ環境になる

あとがき

各環境の状態を合わせたいときには便利ですね!

他のツールに比べて簡単に差分が取れるのでかなり重宝しています。

差分をとるときはIntelliJ IDEA(DataGrip)を使ってみてください!

記事URLをコピーしました