ふりぶろぐ
Web Engineer's Blog
IntelliJ IDEA

IntelliJ IDEAを使ってDBの差分をとる

私はIntelliJ IDEA Ultimateを愛用しています。

DBの差分をとるのにも使っているので、その方法をまとめます。

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

概要

IntelliJ IDEAを使ってデータベースの差分をとってみます。

IntelliJ IDEA 14まではもう少し使いやすかったのですが、アップデートで使いにくくなってしまいました。

しばらくは差分をとるためだけにIntelliJ IDEA 14を入れていましたが、Macのアップデートの影響か動作しなくなってしまいました。

そのため、最新版のIntelliJ IDEA Ultimate 2019.2での差分のとり方を紹介します。(2019/10/25現在)

差分をとってみる

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

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

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

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

DBに接続する

DBに接続する

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

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

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

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

設定画面

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

「Test Connection」を押してみて問題なければOKで保存します。

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

Diff画面を表示する

schemaを選択

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

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

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

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

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

Diff画面

差分を表示する

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

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

Migrate Left
Migrate Right

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

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

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

まとめ

IntelliJ IDEAを使ったDBの差分のとり方を紹介しました。

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

他のツールに比べて簡単に差分が取れるので便利だと思います。

差分をとるときはIntelliJ IDEAを使ってみてください。

ABOUT ME
りーふ
たまにブログを書いてるWebエンジニア。 サーバーサイドメインでインフラとフロントエンドもたまにやります。 Javaが得意。 Play Frameworkが好き。 本業は迷惑をかけない程度に手を抜くスタイル。 意識高い系は苦手。