この記事ではテーブルのデータの差分を確認する方法について解説します。
テーブルのデータの差分を確認する方法
データ移行時などに移行前と移行後のテーブルでデータが同じになっているかどうかを確認することがあるかと思います。
そういったケースではMINUS演算子を使用したSQL文で差分をチェックできます。
SQL文は以下のようになります。
select * from <テーブルA> minus select * from <テーブルB>;
テーブルAを移行元、テーブルBを移行先として、移行元のテーブルに存在して、移行先のテーブルに存在しないレコードを抽出します。
使用例
移行元「emp1」テーブルと移行先「emp2」テーブルを比較します。
それぞれに格納されているデータは以下の通りです。
SQL> select * from emp1;
EMPNO ENAME JOB
------ ------ -------
1 Suzuki Manager
2 Suzuki Manager
3 Suzuki Manager
4 Suzuki Manager
5 Suzuki Manager
6 Suzuki Manager
7 Suzuki Manager
8 Suzuki Manager
9 Suzuki Manager
10 Suzuki Manager
10行が選択されました。
SQL> select * from emp2;
EMPNO ENAME JOB
------ ------ -------
1 Suzuki Manager
2 Suzuki Manager
3 Suzuki Manager
4 Suzuki Manager
5 Suzuki Manager
6 Suzuki Manager
7 Suzuki Manager
8 Suzuki Manager
9 Tanaka Manager
9行が選択されました。
SQL文を実行し、差分を確認します。
SQL> select * from emp1 minus select * from emp2;
EMPNO ENAME JOB
------ ------ -------
10 Suzuki Manager
9 Suzuki Manager
emp1に存在しemp2に存在しないEMPNO=10のレコードとENAMEに異なる値が入っているEMPNO=9のレコードが選択されました。
次にemp2とemp1を入れ替えてSQL文を実行してみます。
SQL> select * from emp2 minus select * from emp1;
EMPNO ENAME JOB
------ ------ -------
9 Tanaka Manager
この場合はEMPNO=9のレコードのみが選択されます。