열 매핑 옵션
기본적으로 COPY 명령은 데이터 파일의 필드 순서와 동일하게 값을 대상 테이블의 열에 삽입합니다. 기본 열 순서가 유효하지 않은 경우에는 열 목록을 지정하거나 JSONPath 표현식을 사용하여 원본 데이터 필드를 대상 열로 매핑할 수 있습니다.
열 목록
열 이름이 쉼표로 구분된 목록을 지정하여 원본 데이터 필드를 특정 대상 열로 로드할 수 있습니다. COPY 문에서는 열의 순서가 정해져 있지 않지만 Amazon S3 버킷과 같은 플랫 파일에서 로드할 때는 원본 데이터의 순서와 일치해야 합니다.
Amazon DynamoDB 테이블에서 로드할 때는 순서가 중요하지 않습니다. COPY 명령은 DynamoDB 테이블에서 가져오는 항목의 속성 이름을 Amazon Redshift 테이블의 열 이름과 일치시킵니다. 자세한 내용은 Amazon DynamoDB 테이블에서 데이터 로드 섹션을 참조하세요.
열 목록의 형식은 다음과 같습니다.
COPY tablename (column1 [,column2, ...])
대상 테이블의 열이 열 목록에서 빠져있으면 COPY가 대상 열의 DEFAULT 표현식을 로드합니다.
대상 열에 기본값이 없으면 COPY가 NULL을 로드하려고 합니다.
NOT NULL로 정의된 열에 COPY가 NULL을 할당하려고 하면 COPY 명령이 실패합니다.
IDENTITY 열이 열 목록에 포함되어 있으면 EXPLICIT_IDS 역시 지정해야 합니다. 반대로 IDENTITY 열이 없으면 EXPLICIT_IDS를 지정할 수 없습니다. 열 목록을 지정하지 않으면 COPY 명령이 마치 열 목록이 순서에 따라 완전하게 지정되어 있는 것처럼, 그리고 EXPLICIT_IDS도 지정하지 않은 것처럼 IDENTITY 열을 생략하여 실행됩니다.
열이 GENERATED BY DEFAULT AS IDENTITY로 정의된 경우 복사할 수 있습니다. 값이 새로 생성되거나 입력한 값으로 업데이트됩니다. EXPLICIT_IDS 옵션은 필요하지 않습니다. COPY는 자격 증명 하이 워터마크를 업데이트하지 않습니다. 자세한 내용은 GENERATED BY DEFAULT AS IDENTITY 단원을 참조하십시오.
JSONPaths 파일
데이터 파일에서 데이터를 JSON 또는 Avro 형식으로 로드할 때는 COPY 명령이 JSON 또는 Avro 원본 데이터의 데이터 요소를 대상 테이블 열에 자동으로 매핑합니다. 이는 Avro 스키마의 필드 이름을 대상 테이블 또는 열 목록의 열 이름과 일치시키는 방식으로 수행됩니다.
경우에 따라 열 이름과 필드 이름이 일치하지 않거나 데이터 계층의 더 깊은 수준에 매핑해야 합니다. 이러한 경우 JSONPaths 파일을 사용하여 JSON 또는 Avro 데이터 요소를 열에 명시적으로 매핑할 수 있습니다.
자세한 내용은 JSONPaths 파일 단원을 참조하십시오.