

 Amazon Redshift는 패치 198부터 새 Python UDF 생성을 더 이상 지원하지 않습니다. 기존 Python UDF는 2026년 6월 30일까지 계속 작동합니다. 자세한 내용은 [블로그 게시물](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)을 참조하세요.

# COPY
<a name="r_COPY"></a>


|  | 
| --- |
| 2025년 4월 30일부터 신규 고객에게 COPY 및 UNLOAD 명령에 대한 클라이언트 측 암호화가 더 이상 제공되지 않습니다. 2025년 4월 30일 이전 12개월 동안 COPY 및 UNLOAD 명령에 클라이언트 측 암호화를 사용한 경우, 2026년 4월 30일까지 COPY 또는 UNLOAD 명령에 클라이언트 측 암호화를 계속 사용할 수 있습니다. 2026년 4월 30일 이후에는 COPY 및 UNLOAD에 클라이언트 측 암호화를 사용할 수 없습니다. 가능한 한 빨리 COPY 및 UNLOAD에 서버 측 암호화를 사용하도록 전환하는 것이 좋습니다. 이미 COPY 및 UNLOAD에 서버 측 암호화를 사용하고 있는 경우 변경 사항이 없으며 쿼리를 변경하지 않고도 계속 사용할 수 있습니다. COPY 및 UNLOAD 암호화에 대한 자세한 내용은 아래 ENCRYPTED 파라미터를 참조하세요.   | 

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

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

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

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

**Topics**
+ [필수 권한](#r_COPY-permissions)
+ [COPY 구문](#r_COPY-syntax)
+ [필수 파라미터](#r_COPY-syntax-required-parameters)
+ [선택적 파라미터](#r_COPY-syntax-overview-optional-parameters)
+ [COPY 명령에 대한 사용 참고 사항 및 추가 리소스](#r_COPY-using-the-copy-command)
+ [COPY 명령 예시](#r_COPY-using-the-copy-command-examples)
+ [COPY JOB](r_COPY-JOB.md)
+ [템플릿으로 복사](r_COPY-WITH-TEMPLATE.md)
+ [COPY 파라미터 참조](r_COPY-parameters.md)
+ [사용 노트](r_COPY_usage_notes.md)
+ [COPY 예](r_COPY_command_examples.md)

## 필수 권한
<a name="r_COPY-permissions"></a>

COPY 명령을 사용하려면 Amazon Redshift 테이블에 대한 [INSERT](r_GRANT.md#grant-insert) 권한이 필요합니다.

## COPY 구문
<a name="r_COPY-syntax"></a>

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

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

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

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

## 필수 파라미터
<a name="r_COPY-syntax-required-parameters"></a>

COPY 명령에는 세 가지 파라미터가 필요합니다.
+ [Table Name](#r_COPY-syntax-overview-table-name)
+ [Data Source](#r_COPY-syntax-overview-data-source)
+ [Authorization](#r_COPY-syntax-overview-credentials)

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';
```

다른 AWS 리전에서 데이터를 로드하기 위한 지침을 포함하여 COPY 명령으로 샘플 데이터를 로드하는 방법에 대한 전체 지침은 Amazon Redshift 시작 안내서의 [Amazon S3에서 샘플 데이터 로드](https://docs.aws.amazon.com/redshift/latest/gsg/rs-gsg-create-sample-db.html)를 참조하세요.

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

FROM *data-source*  <a name="r_COPY-syntax-overview-data-source"></a>
대상 테이블에 로드할 원본 테이블의 위치입니다. 일부 데이터 소스로 매니페스트 파일을 지정할 수 있습니다.  
가장 공통적으로 사용되는 데이터 리포지토리는 Amazon S3 버킷입니다. 또한 클러스터가 Amazon EMR 클러스터와 Amazon EC2 인스턴스, 또는 SSH 연결을 사용하여 액세스할 수 있는 원격 호스트에 위치한 데이터 파일에서 데이터를 로드하거나, 혹은 DynamoDB 테이블에서 직접 데이터를 로드할 수도 있습니다.  
+ [Amazon S3에서 COPY](copy-parameters-data-source-s3.md)
+ [Amazon EMR에서 COPY](copy-parameters-data-source-emr.md) 
+ [원격 호스트(SSH)에서 COPY 지원](copy-parameters-data-source-ssh.md)
+ [Amazon DynamoDB에서 COPY](copy-parameters-data-source-dynamodb.md)

승인  <a name="r_COPY-syntax-overview-credentials"></a>
클러스터가 다른 AWS 리소스에 액세스하기 위한 인증 및 권한 부여에 사용할 방법을 나타내는 절입니다. COPY 명령을 실행하려면 Amazon S3, Amazon EMR, Amazon DynamoDB, Amazon EC2의 데이터를 포함해 다른 AWS 리소스의 데이터에도 액세스할 수 있도록 권한 부여가 필요합니다. 이러한 권한은 클러스터에 연결되어 있는 IAM 역할을 참조하거나, 혹은 IAM 사용자의 액세스 키 ID와 보안 액세스 키를 입력하면 부여할 수 있습니다.  
+ [권한 부여 파라미터](copy-parameters-authorization.md) 
+ [역할 기반 액세스 제어](copy-usage_notes-access-permissions.md#copy-usage_notes-access-role-based) 
+ [키 기반 액세스 제어](copy-usage_notes-access-permissions.md#copy-usage_notes-access-key-based) 

## 선택적 파라미터
<a name="r_COPY-syntax-overview-optional-parameters"></a>

또는 COPY에서 필드 데이터를 대상 테이블의 열에 매핑하는 방식을 지정하고, COPY 명령에서 원본 데이터를 제대로 읽고 구문 분석하도록 원본 데이터 속성을 정의하고, 로드 프로세스 중 COPY 명령으로 수행하는 작업을 관리할 수 있습니다.
+ [열 매핑 옵션](copy-parameters-column-mapping.md)
+ [데이터 형식 파라미터](#r_COPY-syntax-overview-data-format)
+ [데이터 변환 파라미터](#r_COPY-syntax-overview-data-conversion)
+ [데이터 로드 작업](#r_COPY-syntax-overview-data-load)

### 열 매핑
<a name="r_COPY-syntax-overview-column-mapping"></a>

기본적으로 COPY 명령은 데이터 파일의 필드 순서와 동일하게 필드 값을 대상 테이블의 열에 삽입합니다. 기본 열 순서가 유효하지 않은 경우에는 열 목록을 지정하거나 JSONPath 표현식을 사용하여 원본 데이터 필드를 대상 열로 매핑할 수 있습니다.
+ [Column List](copy-parameters-column-mapping.md#copy-column-list)
+ [JSONPaths File](copy-parameters-column-mapping.md#copy-column-mapping-jsonpaths)

### 데이터 형식 파라미터
<a name="r_COPY-syntax-overview-data-format"></a>

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

COPY 명령에서는 기본적으로 원본 데이터가 문자로 구분된 UTF-8 텍스트 파일 형식입니다. 기본 구분자는 파이프 문자(\|)입니다. 원본 데이터가 다른 형식인 경우에는 다른 파라미터를 사용하여 데이터 형식을 지정합니다.
+ [FORMAT](copy-parameters-data-format.md#copy-format)
+ [CSV](copy-parameters-data-format.md#copy-csv)
+ [DELIMITER](copy-parameters-data-format.md#copy-delimiter) 
+ [FIXEDWIDTH](copy-parameters-data-format.md#copy-fixedwidth) 
+ [SHAPEFILE](copy-parameters-data-format.md#copy-shapefile) 
+ [AVRO](copy-parameters-data-format.md#copy-avro) 
+ [JSON format for COPY](copy-parameters-data-format.md#copy-json) 
+ [ENCRYPTED](copy-parameters-data-source-s3.md#copy-encrypted) 
+ [BZIP2](copy-parameters-file-compression.md#copy-bzip2) 
+ [GZIP](copy-parameters-file-compression.md#copy-gzip) 
+ [LZOP](copy-parameters-file-compression.md#copy-lzop) 
+ [PARQUET](copy-parameters-data-format.md#copy-parquet) 
+ [ORC](copy-parameters-data-format.md#copy-orc) 
+ [ZSTD](copy-parameters-file-compression.md#copy-zstd) 

### 데이터 변환 파라미터
<a name="r_COPY-syntax-overview-data-conversion"></a>

COPY 명령은 테이블에 데이터를 로드할 때 원본 데이터의 문자열을 묵시적으로 대상 열의 데이터 형식으로 변환합니다. 기본 동작과 다른 변환을 지정해야 하거나, 혹은 기본 변환이 오류를 일으킬 때는 다음 파라미터를 지정하여 데이터 변환을 관리할 수 있습니다.
+ [ACCEPTANYDATE](copy-parameters-data-conversion.md#copy-acceptanydate) 
+ [ACCEPTINVCHARS](copy-parameters-data-conversion.md#copy-acceptinvchars) 
+ [BLANKSASNULL](copy-parameters-data-conversion.md#copy-blanksasnull) 
+ [DATEFORMAT](copy-parameters-data-conversion.md#copy-dateformat) 
+ [EMPTYASNULL](copy-parameters-data-conversion.md#copy-emptyasnull) 
+ [ENCODING](copy-parameters-data-conversion.md#copy-encoding) 
+ [ESCAPE](copy-parameters-data-conversion.md#copy-escape) 
+ [EXPLICIT_IDS](copy-parameters-data-conversion.md#copy-explicit-ids) 
+ [FILLRECORD](copy-parameters-data-conversion.md#copy-fillrecord) 
+ [IGNOREBLANKLINES](copy-parameters-data-conversion.md#copy-ignoreblanklines) 
+ [IGNOREHEADER](copy-parameters-data-conversion.md#copy-ignoreheader) 
+ [NULL AS](copy-parameters-data-conversion.md#copy-null-as) 
+ [REMOVEQUOTES](copy-parameters-data-conversion.md#copy-removequotes) 
+ [ROUNDEC](copy-parameters-data-conversion.md#copy-roundec) 
+ [TIMEFORMAT](copy-parameters-data-conversion.md#copy-timeformat) 
+ [TRIMBLANKS](copy-parameters-data-conversion.md#copy-trimblanks) 
+ [TRUNCATECOLUMNS](copy-parameters-data-conversion.md#copy-truncatecolumns) 

### 데이터 로드 작업
<a name="r_COPY-syntax-overview-data-load"></a>

문제 해결을 위해, 혹은 로드 시간을 줄일 목적으로 다음 파라미터를 지정하여 로드 작업의 기본 동작을 관리합니다.
+ [COMPROWS](copy-parameters-data-load.md#copy-comprows) 
+ [COMPUPDATE](copy-parameters-data-load.md#copy-compupdate) 
+ [IGNOREALLERRORS](copy-parameters-data-load.md#copy-ignoreallerrors) 
+ [MAXERROR](copy-parameters-data-load.md#copy-maxerror) 
+ [NOLOAD](copy-parameters-data-load.md#copy-noload) 
+ [STATUPDATE](copy-parameters-data-load.md#copy-statupdate) 

## COPY 명령에 대한 사용 참고 사항 및 추가 리소스
<a name="r_COPY-using-the-copy-command"></a>

COPY 명령의 사용 방법에 대한 자세한 내용은 아래 주제를 참조하세요.
+ [사용 노트](r_COPY_usage_notes.md)
+ [튜토리얼: Amazon S3에서 데이터 로드](tutorial-loading-data.md)
+ [데이터 로드에 대한 Amazon Redshift 모범 사례](c_loading-data-best-practices.md)
+ [COPY 명령으로 테이블 로드](t_Loading_tables_with_the_COPY_command.md)
  + [Amazon S3에서 데이터 로드](t_Loading-data-from-S3.md)
  + [Amazon EMR에서 데이터 로드](loading-data-from-emr.md)
  + [원격 호스트에서 데이터 로드](loading-data-from-remote-hosts.md) 
  + [Amazon DynamoDB 테이블에서 데이터 로드](t_Loading-data-from-dynamodb.md)
+ [데이터 로드 문제 해결](t_Troubleshooting_load_errors.md)

## COPY 명령 예시
<a name="r_COPY-using-the-copy-command-examples"></a>

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