새 데이터 업데이트 및 삽입
MERGE 명령을 사용하여 기존 테이블에 새 데이터를 효율적으로 추가할 수 있습니다. 스테이징 테이블을 만든 다음 이 섹션에 설명된 방법 중 하나를 사용하여 스테이징 테이블에서 대상 테이블을 업데이트하여 병합 작업을 수행합니다. MERGE 명령에 대한 자세한 내용은 MERGE 섹션을 참조하세요.
병합 예에서는 TICKIT 데이터 세트라고 하는 Amazon Redshift용 샘플 데이터 세트를 사용합니다. 필수 조건으로 일반 데이터베이스 작업 시작하기에서 제공되는 지침에 따라 TICKIT 테이블과 데이터를 설정할 수 있습니다. 샘플 데이터 세트에 대한 자세한 내용은 샘플 데이터베이스에서 확인할 수 있습니다.
병합 방법 1: 기존 행 교체
대상 테이블의 모든 열을 덮어쓰는 경우 병합을 수행하는 가장 빠른 방법은 기존 행을 바꾸는 것입니다. 이렇게 하면 업데이트할 행을 내부 조인을 사용하여 삭제하기 때문에 대상 테이블을 한 번만 스캔합니다. 행은 삭제된 후에 스테이징 테이블에서 단일 삽입 작업을 통해 새 행으로 교체됩니다.
다음이 모두 참인 경우, 이 방법을 사용하십시오.
-
대상 테이블과 스테이징 테이블에 동일한 열이 포함되어 있습니다.
-
대상 테이블 열의 모든 데이터를 스테이징 테이블의 모든 열로 교체하려 합니다.
-
병합에서 스테이징 테이블의 모든 열을 사용합니다.
이러한 기준 중 하나라도 해당되지 않는 경우 다음 섹션에 설명된 병합 방법 2: MERGE를 사용하지 않고 열 목록 지정을 사용하세요.
스테이징 테이블의 열 일부를 사용하지 않는 경우, 변경되지 않는 행을 WHERE 절을 이용해 배제하여 DELETE 및 INSERT 문을 필터링합니다. 하지만 스테이징 테이블의 열 대부분이 병합에 참여하지 않는다면 이 단원 후반부에서 설명하는 것처럼 별도의 단계에서 UPDATE와 INSERT를 수행하는 것이 좋습니다.
병합 방법 2: MERGE를 사용하지 않고 열 목록 지정
전체 행을 덮어쓰는 대신 대상 테이블의 특정 열을 업데이트하려면 이 방법을 사용합니다. 이 방법은 추가 업데이트 단계가 필요하고 MERGE 명령을 사용하지 않기 때문에 이전 방법보다 시간이 오래 걸립니다. 다음 중 참인 것이 있다면 이 방법을 사용하십시오.
-
대상 테이블의 모든 열을 업데이트하는 것이 아닙니다.
-
스테이징 테이블의 행 대부분이 업데이트에서 사용되지 않습니다.