SQL 데이터베이스를 채우는 데 사용하는 csv 파일 그룹이 있습니다. 저는 이것을 매일의 과정으로 설정하고 있습니다. 나는 단지 일일 업데이트가 아닌 모든 역사적인 데이터가 포함 된 파일이 소수에 불과하다는 것을 발견했습니다.대량 행만 새 행 삽입
일괄 삽입을 시도하면 기본 키를 위반했기 때문에 오류가 발생합니다.
IGNORE_DUP_KEY = ON으로 설정하면 고유하지 않은 레코드가 삽입되는 것을 막을 수 있다고 생각했습니다.
CREATE TABLE TABLE1
(
Column1 varchar(32),
Column2 varchar(32),
Column3 char(9),
Column4 int,
Column5 float(53),
Column6 date,
CONSTRAINT pk_One
PRIMARY KEY (Column1, Column2, Column6)
WITH (IGNORE_DUP_KEY = ON)
);
그럼 내가 도움이되지 않는 오류 메시지가 얻을 테이블 업데이트하는 스크립트를 실행하려고하면 "관련 진술 준비 (0)되지 않습니다."
결과를 별도의 테이블에 기록한 다음 적절한 테이블에 새 행을 쓰면이 문제를 해결할 수 있지만 다른 테이블에 대해 별도의 처리를하면 고통스럽고 추악한 결과를 초래합니다.
기본 키 제약 조건을 위반하지 않는 행만 쓰도록 SQL에 지시하는 쉬운 방법이 있습니까? 당신은 그냥 실패 삽입을 무시하려면 표 (1 열) 값 (값 1)
...에
스테이징 테이블을로드하는 것을 주저하는 사람은 걱정하지 마십시오. ETL을 수행 할 때, 예를 들어 하나 이상의 CSV 파일에서 원시 값을 보유하는 스테이징 테이블을 가지는 것이 정상입니다. 그런 다음 'Insert'또는 'Merge' 문을 사용하여로드 프로세스를 제어 할 수 있습니다. 스테이징 테이블을 사용하면 인바운드 데이터의 품질 제어를보다 잘 제어 할 수 있습니다. – Mike