레이아웃이 동일하지만 다른 데이터를 포함 할 수있는 두 개의 테이블 t1과 t2가 있다고 가정합니다.oracle diff : 두 테이블을 비교하는 방법은 무엇입니까?
이 두 테이블을 비교하는 가장 좋은 방법은 무엇입니까?
레이아웃이 동일하지만 다른 데이터를 포함 할 수있는 두 개의 테이블 t1과 t2가 있다고 가정합니다.oracle diff : 두 테이블을 비교하는 방법은 무엇입니까?
이 두 테이블을 비교하는 가장 좋은 방법은 무엇입니까?
당신은 설정 작업을 사용해 볼 수 있습니다 : MINUS
및 INTERSECT
더 자세한 내용은 여기를 참조하십시오 : http://oreilly.com/catalog/mastorasql/chapter/ch07.html
이런 종류의 질문에 대해 나는 당신이 찾고있는 것에 관해 매우 구체적이어야한다고 생각합니다. 다양한 방법으로 그것을 해석 할 수있는 많은 방법들이 있습니다. 당신의 질문이 그것을 보증하지 않는다면 어떤 접근법은 너무 큰 망치가 될 것입니다.
가장 단순한 수준에서는 "테이블 데이터가 정확히 같거나가요?"입니다. 더 복잡한 것으로 이동하기 전에 간단한 개수 비교로 대답하려고 시도 할 수 있습니다.
스케일의 다른 쪽 끝에는 "다른 테이블에 동일한 행이없는 각 테이블의 행을 표시하십시오"또는 "행이 동일한 키이지만 데이터 값이 다른 위치를 표시하십시오" .
실제로 테이블 A와 테이블 B를 동기화하려는 경우 MERGE 명령을 사용하면 비교적 간단 할 수 있습니다.
"MERGE"명령이 나에게 새롭다. 그것은 많은 상황에서 트릭입니다. – thrag
지출 할 돈이 있다면 Oracle 용 PowerDIFF 도구 인 http://www.orbit-db.com을 사용하십시오. 다양한 비교 옵션이 제공되며 이러한 유형의 작업을 훌륭하게 수행합니다.
이 시도하지 :
(select * from T1 minus select * from T2) -- all rows that are in T1 but not in T2
union all
(select * from T2 minus select * from T1) -- all rows that are in T2 but not in T1
;
어떠한 외부 도구를. union all
의 성능 문제는 없습니다.
dbForge Data Compare for Oracle** 데이터 비교 및 동기화를위한 ** 무료 GUI 도구를 사용해보십시오.이 도구는 모든 데이터베이스에서 또는 부분적으로 이러한 작업을 수행 할 수 있습니다.
빠른 솔루션 :
SELECT * FROM TABLE1
MINUS
SELECT * FROM TABLE2
레코드가 없어야한다 ...
select * from table1 where table1.col1 in (select table2.col1 from table2)
는 col1
기본 키 열입니다 가정하고이 table1
의 모든 행을 줄 것이다 table2
열 1에 해당합니다.
select * from table1 where table1.col1 not in (select table2.col1 from table2)
희망이 도움이
시도 : SQL의 오라클 11g와
select distinct T1.id
from TABLE1 T1
where not exists (select distinct T2.id
from TABLE2 T2
where T2.id = T1.id)
+
하지만 성능이 불리한 것들에 내재 된 고유 한. –