나는 실행 PLSQL 개발자에서오라클 유니언이 SSIS에서 복제본을 만드는 이유는 무엇입니까? PLSQL에서
truncate table MyOracleTableName;
commit work;
insert into MyOracleTablename
select a,b,c,trunc(sysdate) as datadate
from AnotherOracleTableName
where there is a ton of nasty criteria
union
select a,b,c,trunc(sysdate) as datadate from AnotherOracleTableName
where there is a ton of different nasty criteria;
commit work;
이 하나 개의 행을 삽입합니다. SSIS에서 세미 콜론 및 커밋 작업 문없이 SQL을 실행하면 MyOracleTableName에서 기본 키 위반이 발생합니다.
SSIS의자를 오라클에서 수행했음을 확인했습니다.
위의 SQL을 PLSQL Developer에서 실행하고 공용체를 모두 공용체로 바꾸면 두 번째 행이 표시되고 PK 위반으로 인해 삽입이 실패합니다. 그것이 노동 조합이 모두 복제물을 허용해야하는 것처럼.
이것은 현재 잘 작동하는 MSDAORA를 사용하는 SSIS 2005 패키지의 일부입니다. 저는 Oracle 용 Native OLE DB 공급자를 사용하여 SSIS 2008에서 다시 작성하고 있습니다.
내 새로운 환경에서 MSDAORA를 사용할 수 없습니다. 이것은 드라이버 문제이며, 둘째로 MyOracleTableName에없는 것만 삽입하는 여러 문장으로 나누는 것 이외의 다른 방법이 있습니까?
감사합니다.
'SELECT .... UNION .... SELECT'에 따라 'MERGE INTO MyOracleTablename ...'을 수행하면 문제가 발생하지 않습니다. 그러나 UNION은 중복 된 행을 피해야합니다. – Annjawn
Annjawn, 병합하려면 여전히 내 SQL을 두 개의 문으로 분할하고 일치하는 부분을 삽입해야합니다. 나는 그것이 SSIS 패키지를 두 배로하는 것을 피하려고 노력했다. 그래도 감사합니다. 그것을 시험해 보는 것은 흥미있는 타는 것이었다. –
Nicholas에게 코드 작성에 감사드립니다. –