Schema Diff

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

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

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

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

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

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

Note:

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

  • 2つの schemas を比較すると、依存関係は解決されません。

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

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

スキーマ差分ダイアログ

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

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

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

  • SchemaDiff は、オブジェクトの比較中に所有者を無視する必要があります。 所有者を無視 オプションをtrueに設定します。

SchemaDiff パネルは2つのパネルに分かれています。オブジェクト比較パネルとDDL比較パネル。

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

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

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

スキーマ差分比較ボタン

所有者を無視し、空白を無視するには、 比較 ボタンの近くにあるドロップダウンを使用します。

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

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

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

スキーマ差分比較結果

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

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

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

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

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

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

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

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

ヘルプ アイコンをクリックして、SchemaDiffドキュメントを開きます。

スキーマ相違DDL比較パネル

DDLCompare パネルには3つの列が表示されます。

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

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

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

スキーマ差分DDL比較

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

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

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

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

コピー ボタンを使用して、 DDL比較 パネルで生成された差分をコピーすることもできます。

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

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