sql >> データベース >  >> RDS >> PostgreSQL

PostgreSQLで2つのスキーマを比較する方法

    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を無料でお試しください。

    1. コンストラクターSQLiteOpenHelper()は未定義です

    2. 制限を超えると、主キーIDはどうなりますか?

    3. ExcelデータシートをOracleデータベースにロードします

    4. postgresで列挙型の値を削除するにはどうすればよいですか?