Schema Diff¶
Schema Diff は、2つのデータベースまたは2つのスキーマ間でオブジェクトを比較できる機能です。 Tools メニューを使用して、SchemaDiffにアクセスします。
スキーマ差分機能を使用すると、次のことができます。
データベースオブジェクトを(ソースからターゲットへ)比較および同期します。
データベースオブジェクト間の違いを視覚化します。
ターゲットデータベースオブジェクトのSQLステートメントの違いをリストします。
同期スクリプトを生成します。
Note:
ソースデータベースサーバーとターゲットデータベースサーバーは、同じメジャーバージョンである必要があります。
2つの schemas を比較すると、依存関係は解決されません。
Tools メニューの下の SchemaDiff をクリックして、選択パネルを開きます。 databases を比較するには、ソースサーバーとターゲットサーバー、およびデータベースを選択します。 databases を比較するには、ソースとターゲットのサーバー、データベース、およびスキーマを選択します。オブジェクトを選択したら、 Compare ボタンをクリックします。
個々のタブで SchemaDiff の複数のコピーを同時に開くことができます。SchemaDiffのコピーを閉じるには、タブバーの右上隅にある X をクリックします。パネルのタイトルの名前を変更するには、右クリックして/"RenamePanel/"オプションを選択します。
Preferences ダイアログを使用して、以下を指定します。
SchemaDiff が新しいブラウザタブで開きます。 新しいブラウザータブで開く オプションをtrueに設定します。
SchemaDiff は、文字列オブジェクトの比較中に空白を無視する必要があります。 Ignorewhitespaces オプションをtrueに設定します。
SchemaDiff は、オブジェクトの比較中に所有者を無視する必要があります。 所有者を無視 オプションをtrueに設定します。
SchemaDiff パネルは2つのパネルに分かれています。オブジェクト比較パネルとDDL比較パネル。
スキーマ差分オブジェクト比較パネル¶
オブジェクト比較パネルでは、同じメジャーバージョンのソースサーバーとターゲットサーバー、および比較するデータベースを選択できます。接続されているか切断されているかにかかわらず、オブジェクトエクスプローラーの下にリストされているサーバーを選択できます。接続されていないサーバーを選択すると、サーバーを使用する前にパスワードの入力を求められます。
次に、比較するデータベースを選択します。データベースは同じでも異なっていてもかまいません(および同じサーバー内または異なるサーバーから)。
比較 ボタンの近くにあるドロップダウンを使用して、所有者、空白、テーブルスペース、および許可を無視します。
IgnoreOwner–これを選択すると、オブジェクトの比較中に所有者が無視されます。
IgnoreWhitespace–文字列オブジェクトの比較中に空白を無視する場合に選択します。ホワイトスペースには、スペース、タブ、およびCRLFが含まれます。
IgnoreTablespace–これを選択すると、オブジェクトの比較中にテーブルスペースが無視されます。
IgnoreGrant/Revoke–これを選択すると、オブジェクトの比較中にgrantandrevokeコマンドが無視されます。
サーバーとデータベースを選択したら、 Compare ボタンをクリックして ComparisonResult を取得します。
データベースオブジェクトのドロップダウンリストを使用して、DDLステートメントを表示します。
オブジェクト比較パネルの右上隅には、次の比較基準に基づいてデータベースオブジェクトをフィルタリングするために使用できる Filter オプションがあります。
同一–オブジェクトが両方のデータベースで同じSQLステートメントで見つかった場合、比較結果は同一です。
異なる–オブジェクトが両方のデータベースで見つかったが、SQLステートメントが異なる場合、比較結果は異なります。
ソースのみ–オブジェクトがソースデータベースのみで見つかり、ターゲットデータベースでは見つからない場合、比較結果はソースのみです。
ターゲットのみ–オブジェクトがターゲットデータベースのみで見つかり、ソースデータベースでは見つからない場合、比較結果はターゲットのみです。
オブジェクト比較パネルでいずれかのデータベースオブジェクトをクリックして、そのオブジェクトのDDLステートメントをDDL比較パネルに表示します。
Help アイコンをクリックして、SchemaDiffドキュメントを開きます。
SchemaDiffDDL比較パネル¶
DDLComparison パネルには、3つの列が表示されます。
最初の列には、ソースデータベースからのオブジェクトのDDLステートメントが表示されます。
2番目の列には、ターゲットデータベースからのオブジェクトのDDLステートメントが表示されます。
3列目には、ターゲットデータベースオブジェクトのSQLステートメントの違いが表示されます。
すべてのデータベースオブジェクトのDDLステートメントを確認して、SQLステートメントの違いを確認できます。
また、ソースデータベースオブジェクトのSQLステートメントに基づいて、ターゲットデータベースオブジェクトで見つかった違いのSQLスクリプトを生成できます。スクリプトを生成するには、オブジェクト比較パネルでデータベースオブジェクトのチェックボックスを選択し、オブジェクト比較パネルの右上隅にある GenerateScript ボタンをクリックします。
データベースオブジェクトを選択し、 スクリプトの生成 ボタンをクリックして、新しいタブで クエリツール を開きます。 クエリエディター に表示されるSQLステートメントの違い。
データベースオブジェクトをクリックして、 DDL比較 パネルで生成された違いを確認し、データベースオブジェクトのチェックボックスを選択していない場合、pgAdminは新しいタブで クエリツール を開きます。違いは クエリエディター に表示されるSQLステートメント。
コピー ボタンを使用して、 DDL比較 パネルで生成された差分をコピーすることもできます。
ターゲットデータベースにSQLステートメントを適用して、データベースを同期します。