문제

SQL Server DB에 대량 업로드를하려고합니다. 소스 파일에는 제거하려는 복제물이 있으므로 작업이 자동으로 첫 번째를 업로드 한 다음 나머지를 버릴 것으로 기대했습니다. (고유 한 키 제약 조건을 설정했습니다). 문제는 중복 업로드가 시도되는 순간 모든 것이 실패하고 롤백됩니다. SQL에게 계속 갈 수있는 방법이 있습니까?

도움이 되었습니까?

해결책

데이터를 임시 테이블에 대량 삽입 한 다음 @MadColor가 제안한대로 별개를 선택하십시오.

INSERT INTO yourTable
SELECT * FROM #tempTable tt
WHERE NOT EXISTS (SELECT 1 FROM youTable yt WHERE yt.id = tt.id)

또는 위치 절의 다른 필드.

다른 팁

SQL Plus 또는 DBVIS 또는 Toad와 같은 일부 SQL 도구를 통해이 작업을 수행하는 경우에는 그렇지 않습니다. 이 작업을 언어로 수행하는 경우 나누고 정복해야합니다. 아마도 라인별로 업데이트를 실행하고 각 예외를 잡는 것은 프로세스가 너무 길어서 전체 SQL 블록에서 먼저 배치 작업을 수행 할 수 있으며 실패하면 상반기에 수행 할 수 있습니다. 상반기 상반기에 해요. 성공하는 블록이있을 때까지 이런 식으로 반복하십시오. 블록을 버리고 나머지 SQL에서 동일한 절차를 수행하십시오. 제약 조건을 위반하는 것은 결국 로그인하고 폐기하는 유일한 SQL 문으로 끝납니다. 이는 여전히 유효하지 않은 라인을 버리는 동안 가능한 한 많은 대량 처리로 가져와야합니다.

이를 위해 SSI를 사용하십시오. 복제물을 건너 뛰라고 말할 수 있습니다. 그러나 먼저 그들이 진정한 복제물인지 확인하십시오. 일부 열의 데이터가 다른 경우 어떻게 보관할 수있는 더 나은 레코드인지 어떻게 알 수 있습니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top