PostgreSQLで2つのスキーマを比較する必要がある場合があります。 SQLクエリを使用してこれを実行するか、PostgreSQLで2つのスキーマを比較できる多くのサードパーティツールの1つを使用できます。この記事では、PostgreSQLで2つのスキーマを比較する両方の方法を見ていきます。
PostgreSQLで2つのスキーマを比較する方法
SQLクエリを使用する方法とpgAdminを使用する方法の2つの方法でPostgreSQLの2つのスキーマを比較します。
SQLを使用して2つのスキーマを比較する
2つのスキーマを比較するためのSQLクエリは次のとおりです。 schema1とschema2を、比較する2つのスキーマの名前に置き換えます。
select COALESCE(c1.table_name, c2.table_name) as table_name, COALESCE(c1.column_name, c2.column_name) as table_column, c1.column_name as schema1, c2.column_name as schema2 from (select table_name, column_name from information_schema.columns c where c.table_schema = 'schema1') c1 full join (select table_name, column_name from information_schema.columns c where c.table_schema = 'schema2') c2 on c1.table_name = c2.table_name and c1.column_name = c2.column_name where c1.column_name is null or c2.column_name is null order by table_name, table_column;
上記のクエリは、基本的に、いずれかのスキーマに存在するすべての行と、もう一方のスキーマに存在する/存在しないことに関する情報を一覧表示します。
- table_name –schema1またはschema2に存在するテーブルの名前
- table_column –schema1またはschema2に存在する列の名前
- schema1 –列がschema1に存在する場合はその名前が表示され、そうでない場合はnullになります。
- schema2 –列がschema2に存在する場合はその名前が表示され、そうでない場合はnullになります。
pgAdminの2つのスキーマを比較する
スキーマ差分を使用します スキーマ、データベース、またはその他のオブジェクトを比較するためのpgAdminの機能。
スキーマ差分ツールを使用すると、2つのデータベースオブジェクト間の違いを追跡し、データベースを同期するためのさまざまなSQLステートメントを一覧表示できます。
ただし、ソースサーバーとターゲットサーバーは同じメジャーサーバーバージョンである必要があることに注意してください。
スキーマ差分ツールを使用して2つのスキーマを比較する手順は次のとおりです。
1.スキーマ差分をクリックします オプション、ツールの下 メニュー。
2.ソースとターゲットを選択する必要があるフォームが表示されます
3.要件に応じて、サーバーバージョン、ソースサーバーとターゲットサーバー、およびデータベース/スキーマを選択します。
4. [比較]をクリックして、2つのデータベース/スキーマを比較します。オブジェクト比較結果の詳細なリストが表示され、続いてDDL比較結果が表示されます
5.オブジェクトの比較結果はツリーとして表示され、クリックして展開/折りたたむことができます。
6.DDL比較の結果は3つのパネルに表示されます。左側のパネルには、ソーススキーマのSQLクエリがあります。中央のパネルには、ターゲットスキーマのSQLステートメントがあります。右側のパネルには、2つのスキーマのSQLステートメントの違いがあります。
7.クエリエディタ、スクリプトジェネレータ、フィルタなど、比較結果を絞り込むための多くのオプションがあります。
pgAdmin Schema diffは、SQLベースのスキーマ比較よりもはるかに包括的であり、強くお勧めします。この記事がPostgreSQLの2つのスキーマの比較に役立つことを願っています。
Ubiqを使用すると、データを簡単に視覚化し、リアルタイムのダッシュボードで監視できます。 Ubiqを無料でお試しください。