기존 행을 교체하여 병합 작업 수행 - Amazon Redshift

기존 행을 교체하여 병합 작업 수행

해당 절차에 상세히 설명된 병합 작업을 실행할 때 모든 단계를 포함하되 단일 트랜잭션에서 임시 스테이징 테이블을 생성하거나 삭제할 때는 예외입니다. 임의 단계가 실패하면 트랜잭션이 롤백됩니다. 단일 트랜잭션을 사용하면 커밋의 수도 줄어들어 시간과 자원을 절약할 수 있습니다.

기존 행을 교체하여 병합 작업을 수행하려면
  1. 다음 유사 코드에 나온 것처럼 스테이징 테이블을 생성한 다음 병합될 데이터로 테이블을 채웁니다.

    CREATE temp table stage (like target); INSERT INTO stage SELECT * FROM source WHERE source.filter = 'filter_expression';
  2. MERGE를 사용하여 스테이징 테이블과 내부 조인을 수행하여 스테이징 테이블과 일치하는 대상 테이블의 행을 업데이트한 다음 스테이징 테이블과 일치하지 않는 나머지 모든 행을 대상 테이블에 삽입합니다.

    업데이트 및 삽입 작업은 하나의 MERGE 명령으로 실행하는 것이 좋습니다.

    MERGE INTO target USING stage [optional alias] on (target.primary_key = stage.primary_key) WHEN MATCHED THEN UPDATE SET col_name1 = stage.col_name1 , col_name2= stage.col_name2, col_name3 = {expr} WHEN NOT MATCHED THEN INSERT (col_name1 , col_name2, col_name3) VALUES (stage.col_name1, stage.col_name2, {expr});
  3. 스테이징 테이블을 삭제합니다.

    DROP TABLE stage;