web-dev-qa-db-ja.com

PostgreSQL:スキーマ差分/パッチツール

次の設定を検討してください。

  • 本番DB
  • 新機能を有効にするためにスキーマが変更される開発データベース

新しい機能の開発が完了したら、両方のDBのpg_dump --schema-onlyが同じになるまで、prod dbスキーマを手動で更新する必要があります。このプロセスはエラーが発生しやすく、面倒です。

だから、私はできるツールを探しています:

  • 2つのスキーマの違いの概要を表示します(diffなど)。スキーマの単なるテキストの差分ではなく、「テーブルXに新しい列Y」のような結論を導き出すことができる、より複雑なツールを探していることに注意してください。
  • 1つのスキーマを別のスキーマに変換するSQLコードを自動生成します(例 patch

スキーマはありますか diff / patch prodスキーマをより高度なdevスキーマに変換するのに役立つツールはありますか?

14
Adam Matan

古い質問を復活させて申し訳ありません

最近私は使用しています xDBEDataGrip JetBrainsによるデータベース管理ツール。

優れたJetbrains IDEで複数のデータベースエンジンをサポートしており、私が便利だと思った主な機能は、diff 2テーブル(DEVとPROD)を使用できることです。

以下は、動作中の差分のスクリーンショットです(この場合、列の違いは1つだけです)。スクリーンショットは、上部にある[Merge Right]ボタンの結果であり、適切なテーブルをスクラッチするために必要なSQLを生成しています。

0xDBE SQL Table Diff

この新しいツールがお役に立てば幸いです。

12
Ewan

liquibase を使用します。

diff をサポートし、ゼロからデータベースを生成し、データベースにパッチを適用し、データベースをロールバックし、他の多くのものをサポートします。

以前は、すべてをリキベースを使用してXMLで記述する必要がありましたが、それ以上は必要ありませんでした。その99%を選択したSQL方言で記述できます。例:

--liquibase formatted sql

--changeset neil:1 

create table contacts(
  contact_id serial primary key,
  name text not null unique
);

--changeset neil:2
alter table contacts add column phone_num text;

リキベースの変更ログはgitまたはwhat-have-youに保存する必要があります。

6
Neil McGuigan