バックエンド

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

intellij-db-migration

こんばんは!光です。

大手グローバル企業でWebエンジニアをやっています。

Webエンジニアを目指してプログラミングを勉強している初心者の方向けに情報を発信しています。

経歴や実績はこちら

システム開発のお仕事の依頼もお待ちしております。

お問い合わせページTwitterのDMからお気軽にお問い合わせください!

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

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

普通に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)を使ってみてください!