COPY - Amazon Redshift

COPY

데이터 파일 또는 Amazon DynamoDB 테이블의 데이터를 테이블에 로드합니다. 이 파일은 Amazon Simple Storage Service(Amazon S3) 버킷과 Amazon EMR 클러스터 또는 SSH(Secure Shell) 연결을 사용하여 액세스하는 원격 호스트에서 찾을 수 있습니다.

참고

Amazon Redshift Spectrum 외부 테이블은 읽기 전용입니다. 외부 테이블로 복사할 수 없습니다.

COPY 명령은 입력 데이터를 테이블에 추가 행으로 추가합니다.

어떤 원본이든지 상관없이 단일 입력 행의 최대 크기는 4MB입니다.

필요한 권한

COPY 명령을 사용하려면 Amazon Redshift 테이블에 대한 INSERT 권한이 필요합니다.

COPY 구문

COPY table-name [ column-list ] FROM data_source authorization [ [ FORMAT ] [ AS ] data_format ] [ parameter [ argument ] [, ... ] ]

COPY 작업은 테이블 이름과 데이터 원본, 그리고 데이터에 대한 액세스 권한 등 최소 3개 파라미터만 있으면 실행할 수 있습니다.

Amazon Redshift는 COPY 명령의 기능을 연장하여 다수의 데이터 원본에서 몇 가지 데이터 형식으로 데이터를 로드하거나, 데이터 로드를 위한 액세스 권한을 제어하거나, 데이터 변환 및 로드 작업을 관리하는 데도 사용 가능합니다.

이번 섹션에서는 필요한 COPY 명령 파라미터를 제시하면서 함수에 따라 옵션 파라미터를 분류합니다. 각 파라미터와 함께 다양한 옵션 조합의 사용 방법에 대해서도 설명합니다. 알파벳 순서로 정렬된 파라미터 목록을 사용해 파라미터 설명으로 직접 이동할 수 있습니다.

필수 파라미터

COPY 명령에는 세 가지 파라미터가 필요합니다.

COPY 명령을 가장 단순하게 사용하면 다음 형식과 같습니다.

COPY table-name FROM data-source authorization;

다음은 CATDEMO라는 이름의 테이블을 생성한 다음 category_pipe.txt라는 이름의 Amazon S3 데이터 파일에서 샘플 데이터를 테이블에 로드하는 예입니다.

create table catdemo(catid smallint, catgroup varchar(10), catname varchar(10), catdesc varchar(50));

다음 예에서 COPY 명령의 데이터 원본은 이름이 redshift-downloads인 Amazon S3 버킷의 tickit 폴더에 저장된 category_pipe.txt라는 데이터 파일입니다. COPY 명령은 AWS Identity and Access Management(IAM) 역할을 통해 Amazon S3 버킷에 액세스할 수 있는 권한이 부여됩니다. 클러스터에 연결되어 있는 기존 IAM 역할에 Amazon S3에 액세스할 수 있는 권한이 부여되어 있으면 다음 COPY 명령에서 해당 역할의 Amazon 리소스 이름(ARN)으로 치환한 후 명령을 실행할 수 있습니다.

copy catdemo from 's3://redshift-downloads/tickit/category_pipe.txt' iam_role 'arn:aws:iam::<aws-account-id>:role/<role-name>' region 'us-east-1';

IAM 역할을 생성하는 단계는 Amazon Redshift 시작 안내서의 2단계: IAM 역할 생성을 참조하세요. 다른 AWS 리전에서 데이터를 로드하기 위한 지침을 포함하여 COPY 명령으로 샘플 데이터를 로드하는 방법에 대한 전체 지침은 Amazon Redshift 시작 안내서의 6단계: Amazon S3에서 샘플 데이터 로드를 참조하세요.

table-name

COPY 명령을 실행할 대상 테이블의 이름입니다. 이 테이블은 사전에 데이터베이스에 존재해야 하며, 임시 테이블일 수도 있고, 영구 테이블일 수도 있습니다. COPY 명령은 새로운 입력 데이터를 테이블의 기존 행에 추가합니다.

FROM data-source

대상 테이블에 로드할 원본 테이블의 위치입니다. 일부 데이터 소스로 매니페스트 파일을 지정할 수 있습니다.

가장 공통적으로 사용되는 데이터 리포지토리는 Amazon S3 버킷입니다. 또한 클러스터가 Amazon EMR 클러스터와 Amazon EC2 인스턴스, 또는 SSH 연결을 사용하여 액세스할 수 있는 원격 호스트에 위치한 데이터 파일에서 데이터를 로드하거나, 혹은 DynamoDB 테이블에서 직접 데이터를 로드할 수도 있습니다.

권한 부여

클러스터가 다른 AWS 리소스에 액세스하기 위한 인증 및 권한 부여에 사용할 방법을 나타내는 절입니다. COPY 명령을 실행하려면 Amazon S3, Amazon EMR, Amazon DynamoDB, Amazon EC2의 데이터를 포함해 다른 AWS 리소스의 데이터에도 액세스할 수 있도록 권한 부여가 필요합니다. 이러한 권한은 클러스터에 연결되어 있는 IAM 역할을 참조하거나, 혹은 IAM 사용자의 액세스 키 ID와 보안 액세스 키를 입력하면 부여할 수 있습니다.

선택적 파라미터

또는 COPY에서 필드 데이터를 대상 테이블의 열에 매핑하는 방식을 지정하고, COPY 명령에서 원본 데이터를 제대로 읽고 구문 분석하도록 원본 데이터 속성을 정의하고, 로드 프로세스 중 COPY 명령으로 수행하는 작업을 관리할 수 있습니다.

열 매핑

기본적으로 COPY 명령은 데이터 파일의 필드 순서와 동일하게 필드 값을 대상 테이블의 열에 삽입합니다. 기본 열 순서가 유효하지 않은 경우에는 열 목록을 지정하거나 JSONPath 표현식을 사용하여 원본 데이터 필드를 대상 열로 매핑할 수 있습니다.

데이터 형식 파라미터

데이터는 텍스트 파일에서 고정 폭, 문자 구분, 쉼표 구분 값(CSV) 또는 JSON 형식으로, 혹은 Avro 파일에서 로드할 수 있습니다.

COPY 명령에서는 기본적으로 원본 데이터가 문자로 구분된 UTF-8 텍스트 파일 형식입니다. 기본 구분자는 파이프 문자(|)입니다. 원본 데이터가 다른 형식인 경우에는 다른 파라미터를 사용하여 데이터 형식을 지정합니다.

데이터 변환 파라미터

COPY 명령은 테이블에 데이터를 로드할 때 원본 데이터의 문자열을 묵시적으로 대상 열의 데이터 형식으로 변환합니다. 기본 동작과 다른 변환을 지정해야 하거나, 혹은 기본 변환이 오류를 일으킬 때는 다음 파라미터를 지정하여 데이터 변환을 관리할 수 있습니다.

데이터 로드 작업

문제 해결을 위해, 혹은 로드 시간을 줄일 목적으로 다음 파라미터를 지정하여 로드 작업의 기본 동작을 관리합니다.

COPY 명령에 대한 사용 참고 사항 및 추가 리소스

COPY 명령의 사용 방법에 대한 자세한 내용은 아래 주제를 참조하십시오.

COPY 명령 예시

다양한 소스에서 다양한 형식으로 다양한 COPY 옵션을 사용하여 COPY를 실행하는 방법을 보여주는 추가 예시는 COPY 예 섹션을 참조하세요.