Schema Diff#

Schema Diff は、2つのデータベースまたは2つのスキーマ間でオブジェクトを比較できる機能です。 Tools メニューを使用して、Schema Diffにアクセスします。

スキーマ差分機能を使用すると、次のことができます。

  • データベースオブジェクトを比較および同期しますソースからターゲットへ。

  • データベースオブジェクト間の違いを視覚化します。

  • ターゲットデータベースオブジェクトのSQLステートメントの違いをリストします。

  • 同期スクリプトを生成します。

Note:

  • ソースデータベースサーバーとターゲットデータベースサーバーは、同じメジャーバージョンである必要があります。

  • 2つの schemas を比較しても、依存関係は解決されません。

Tools メニューの下の Schema Diff をクリックして、選択パネルを開きます。 databases を比較するには、ソースサーバー、ターゲットサーバー、およびデータベースを選択します。 databases を比較するには、ソースおよびターゲットサーバー、データベース、およびスキーマを選択します。オブジェクトを選択したら、[ 比較 ]ボタンをクリックします。

スキーマ差分 の複数のコピーを個々のタブで同時に開くことができます。 Schema Diffのコピーを閉じるには、タブバーの右上隅にある X をクリックします。右クリックして/"Rename Panel/"オプションを選択して、パネルタイトルの名前を変更できます。

スキーマdiffダイアログ

Preferences ダイアログを使用して、以下を指定します。

  • Schema Diff が新しいブラウザタブで開きます。 新しいブラウザタブで開く オプションをtrueに設定します。

  • Schema Diff は、文字列オブジェクトを比較するときに空白を無視する必要があります。 Ignore Whitespaces オプションをtrueに設定します。

  • Schema Diff は、オブジェクトを比較しているときに所有者を無視する必要があります。 Ignore owner オプションをtrueに設定します。

ワークスペースレイアウトのスキーマ差分#

ワークスペースレイアウトは、気を散らさないスキーマ差分専用の領域を提供します。デフォルトでは、Schema Diffワークスペースボタンは、少なくとも1つのSchema Diffタブが開かれるまで無効になっています。

Note ワークスペースレイアウトでは、すべてのSchema DiffタブがSchema Diffワークスペース内で開きます。

スキーマ差分ワークスペース

Schema Diff パネルは2つのパネルに分割されています。 Object ComparisonパネルとDDL Comparisonパネル。

スキーマ差分オブジェクト比較パネル#

オブジェクト比較パネルでは、同じメジャーバージョンのソースサーバーとターゲットサーバー、および比較するデータベースを選択できます。接続されているか切断されているかにかかわらず、オブジェクトエクスプローラーの下にリストされているサーバーを選択できます。接続されていないサーバーを選択すると、サーバーを使用する前にパスワードの入力を求められます。

次に、比較するデータベースを選択します。データベースは同じでも異なっていてもよく、同じサーバー内または別のサーバーからでもかまいません。

スキーマ差分比較ボタン

Compare ボタンの近くのドロップダウンを使用して、所有者、空白、テーブルスペース、および付与を無視します。

  • Ignore Owner – オブジェクトの比較中に所有者を無視する場合に選択します。

  • Ignore Whitespace – 文字列オブジェクトの比較中に空白を無視する場合に選択します。ホワイトスペースには、スペース、タブ、CRLFが含まれます。

  • Ignore Tablespace – オブジェクトの比較中にテーブルスペースを無視する場合に選択します。

  • Ignore Grant/Revoke – オブジェクトの比較中にgrantおよびrevokeコマンドを無視する場合に選択します。

サーバーとデータベースを選択したら、[ 比較 ]ボタンをクリックして 比較結果 を取得します。

スキーマdiff比較結果

データベースオブジェクトのドロップダウンリストを使用して、 DDLステートメントを表示します。

オブジェクト比較パネルの右上隅には、次の比較基準に基づいてデータベースオブジェクトをフィルタリングするために使用できる Filter オプションがあります。

  • 同一 – 同じSQLステートメントを使用して両方のデータベースでオブジェクトが見つかった場合、比較結果は同じです。

  • Different – オブジェクトが両方のデータベースで見つかったものの、 SQLステートメントが異なる場合、比較結果は異なります。

  • ソースのみ – オブジェクトがソースデータベースのみで見つかり、ターゲットデータベースで見つからない場合、比較結果はソースのみです。

  • ターゲットのみ – オブジェクトがターゲットデータベースのみで見つかり、ソースデータベースではない場合、比較結果はターゲットのみです。

スキーマdiffフィルタオプション

オブジェクト比較パネルでデータベースオブジェクトのいずれかをクリックして、そのオブジェクトのDDLステートメントをDDL Comparisonパネルに表示します。

Click the Help icon to open Schema Diff documentation.

スキーマ差分DDL比較パネル#

The DDL Comparison panel displays three columns:

  • 最初の列には、ソースデータベースからのオブジェクトのDDLステートメントが表示されます。

  • 2番目の列には、ターゲットデータベースからのオブジェクトのDDLステートメントが表示されます。

  • 3列目には、ターゲットデータベースオブジェクトのSQLステートメントの違いが表示されます。

スキーマdiff DDLの比較

すべてのデータベースオブジェクトのDDLステートメントを確認して、 SQLステートメントの違いを確認できます。

また、ソースデータベースオブジェクトのSQLステートメントに基づいて、ターゲットデータベースオブジェクトで見つかった差分のSQLスクリプトを生成できます。スクリプトを生成するには、オブジェクト比較パネルでデータベースオブジェクトのチェックボックスを選択し、オブジェクト比較パネルの右上隅にある Generate Script ボタンをクリックします。

データベースオブジェクトを選択し、 * Generate Script* ボタンをクリックして、新しいタブで クエリツール を開きます。 クエリエディタ に表示されるSQLステートメントの違い。

データベースオブジェクトをクリックして、 * DDL比較* パネルで生成された違いを確認し、データベースオブジェクトのチェックボックスを選択していない場合、pgAdminは新しいタブで クエリツール を開き、 クエリエディタ に表示されるSQLステートメント。

You can also use the Copy button to copy the difference generated in the DDL Comparison panel.

スキーマ差分生成スクリプト クエリエディター

ターゲットデータベースにSQLステートメントを適用して、データベースを同期します。