はじめに
Oracle Databaseで2つのテーブル間の差分を確認したいときがあります。
片方のテーブルにしか存在しないレコードや値が異なるレコードを抽出したい場合、「dbForge Data Compare for Oracle」というツールを使うと、GUIで差分を表示することができます。
dbForge Data Compare for Oracle
dbForge Data Compare for Oracleは以下のサイトから入手することができます。(要ユーザ登録)有料版と無料版がありますが、今回は無料版のdbForge Data Compare for Oracle 3.0 Expressを使います。
準備
1.テスト用のテーブル(table01)を作成します。
2.データを3件ほど登録します。
3.table01を元に、もう一方のテーブルを作成します。
CREATE TABLE table02 NOLOGGING PARALLEL AS SELECT * FROM table01;
4.table02のレコードを1件変更します。続いて、あたらしいレコードを追加します。
UPDATE table02 SET NAME='伊藤 太郎', FURIGANA='いとう たろう' where id = '3'; INSERT INTO table02(ID, NAME, furigana) VALUES (4, '田中 太郎', 'たなか たろう'); commit;
これで準備は整いました。
dbForge Data Compare for Oracleでテーブルを比較する
1.dbForge Data Compare for Oracleを起動します。
2.データベースの接続設定ダイアログが表示されます。ここでログインIDとパスワードを指定します。
3.FileメニューからNew Data Comparisonを選択します。
4.比較元と比較先のスキーマを指定します。今回は同一サーバ内のテーブル比較なので、両方とも同じ値になります。
この画面で、Records to Displayの欄のチェックボックスの設定で表示する行を選択することができます。ここでは、Identical Records以外にチェックを入れ、NEXTボタンをクリックします。
- Different Records 値が異なる行
- Only in Source 比較元にしか存在しない行
- Only in Target 比較先にしか存在しない行
- Identical Records 一致する行
5.この画面はオプションを指定する画面ですが、無料版は変更できないのでNEXTボタンをクリックします。
6.以下の画面で右クリックからObject Mappingを選択します。
7.左に比較元テーブル、右に比較先テーブルを選択してOKボタンをクリックします。
8.以下の画面で右クリックからColumn Mappingを選択します。
9.ID列にチェックを入れて、OKボタンをクリックします。
10.これで設定は完了です。Compareボタンをクリックすると、比較がはじまります。
比較結果
上部のペインに差異のある行数が出力されます。
値が異なる行が1行、比較先にしか存在しない行が1行検出されていることがわかります。
中央のペインに差異のある行のデータが出力されます。
下部のペインには、エラーや警告メッセージが出力されます。
黄色の警告には、同一レコードはオプション設定によって除外されたことが表示されています。
おわりに
dbForge Data Compare for Oracleを使うと同一サーバ内のテーブルはもちろん、異なるサーバ同士の比較も可能です。テーブル同士をさっと比較したいときに、覚えておくと良いツールです。