2 つのデータベースに 2 つのテーブルがあり、そのうちの 1 つが (インフォマティカ マッピングを介して、単純な挿入で置き換えることはできません) 他のテーブルからコピーされるため、すべての列に元のテーブルと同じデータがあるかどうかを確認する必要があります。1 つの列をテストする場合は、次のようにします。
Select column1
from
table1
minus
Select column1
from
table2@dblink
100 列のテーブルのすべての列でこれを行うと、時間の無駄になります。これを比較してみました:
Select column1,column2,.....column N
from
table1
minus
Select column1,column2,.....column N
from
table2@dblink
しかし、1 つの列が一致しなくても、すべての値が返されました。そのため、スクリプトが 2 つのテーブルを比較し、同一の値を持たない列を返すようにするには、これを行う最善の方法は何だろうと考えていました。
私の頭に浮かぶ別の基準は次のとおりです。
select
(case when T.column1 <> P.column1 then T.id else null),
...
...
...
from
table1 T,
schema.table1@dblink P
where
T.id=P.id
and T.date>='01-DEC-2012'
and T.date<='10-DEC-2012'
and P.date>='01-DEC-2012'
and P.date<='10-DEC-2012';
以前は、パフォーマンスを向上させるために機能を日付付けしていました。