

 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 명령을 사용하여 Amazon S3에서 로드
<a name="t_loading-tables-from-s3"></a>

[COPY](r_COPY.md) 명령을 사용하여 Amazon S3의 데이터 파일에서 병렬로 테이블을 로드합니다. Amazon S3 객체 접두사를 사용하거나 매니페스트 파일을 사용하여 로드할 파일을 지정할 수 있습니다.

접두사를 사용하여 로드할 파일을 지정하는 구문은 다음과 같습니다.

```
COPY <table_name> FROM 's3://<bucket_name>/<object_prefix>'
authorization;
```

 매니페스트 파일은 로드할 데이터 파일을 나열하는 JSON 형식 파일입니다. 매니페스트 파일을 사용하여 로드할 파일을 지정하는 구문은 다음과 같습니다.

```
COPY <table_name> FROM 's3://<bucket_name>/<manifest_file>'
authorization
MANIFEST;
```

로드할 테이블이 데이터베이스에 이미 존재하고 있어야 합니다. 테이블 생성에 대한 자세한 내용은 SQL 참조의 [CREATE TABLE](r_CREATE_TABLE_NEW.md) 섹션을 참조하세요.

*authorization* 값은 Amazon Redshift가 Amazon S3 객체에 액세스하는 데 필요한 AWS 권한 부여를 제공합니다. 필요한 권한에 대한 자세한 내용은 [COPY, UNLOAD 및 CREATE LIBRARY 작업을 위한 IAM 권한](copy-usage_notes-access-permissions.md#copy-usage_notes-iam-permissions) 섹션을 참조하세요. 선호되는 인증 방법은 IAM\$1ROLE 파라미터를 지정하고 IAM 역할의 Amazon 리소스 이름(ARN)에 필요한 권한을 제공하는 것입니다. 자세한 정보는 [역할 기반 액세스 제어](copy-usage_notes-access-permissions.md#copy-usage_notes-access-role-based)을 참조하세요.

IAM\$1ROLE 파라미터를 사용하여 인증하려면 다음 구문을 참조하여 *<aws-account-id>* 및 *<role-name>*을 바꿉니다.

```
IAM_ROLE 'arn:aws:iam::<aws-account-id>:role/<role-name>'
```

다음 예는 IAM 역할을 사용한 인증을 보여 줍니다.

```
COPY customer 
FROM 's3://amzn-s3-demo-bucket/mydata' 
IAM_ROLE 'arn:aws:iam::0123456789012:role/MyRedshiftRole';
```

기타 옵션에 대한 자세한 내용은 [권한 부여 파라미터](copy-parameters-authorization.md) 섹션을 참조하세요.

실제로 테이블을 로드하지 않고 데이터를 확인하려면 [COPY](r_COPY.md) 명령과 함께 NOLOAD 옵션을 사용하세요.

다음 예는 `venue.txt`라는 이름의 파일에서 파이프로 구분된 데이터의 첫 몇 행을 보여 줍니다.

```
1|Toyota Park|Bridgeview|IL|0
2|Columbus Crew Stadium|Columbus|OH|0
3|RFK Stadium|Washington|DC|0
```

파일을 Amazon S3에 업로드하기 전에 COPY 명령이 병렬 처리를 사용해 로드할 수 있도록 파일을 여러 파일로 분할합니다. 이때 파일 수는 클러스터 조각 수의 승수가 되어야 합니다. 이때는 압축 후 파일 크기가 1MB\$11GB로 거의 같아질 수 있도록 로딩 데이터 파일을 분할합니다. 자세한 내용은 [압축 및 비압축 파일에서 데이터 로드](t_splitting-data-files.md) 섹션을 참조하세요.

예를 들어 `venue.txt` 파일은 다음과 같이 4개의 파일로 분할할 수 있습니다.

```
venue.txt.1
venue.txt.2
venue.txt.3
venue.txt.4
```

다음 COPY 명령은 Amazon S3 버킷 `amzn-s3-demo-bucket`에서 접두사 'venue'가 있는 데이터 파일에서 파이프로 구분된 데이터를 사용해 VENUE 테이블을 로드합니다.

**참고**  
다음 예의 Amazon S3 버킷 `amzn-s3-demo-bucket`은 존재하지 않습니다. 기존 Amazon S3 버킷의 실제 데이터를 사용하는 샘플 COPY 명령은 [샘플 데이터 로드](https://docs.aws.amazon.com/redshift/latest/gsg/cm-dev-t-load-sample-data.html) 섹션을 참조하세요.

```
COPY venue FROM 's3://amzn-s3-demo-bucket/venue'
IAM_ROLE 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
DELIMITER '|';
```

키 접두사 'venue'가 있는 Amazon S3 객체가 존재하지 않는 경우 로드가 실패합니다.

**Topics**
+ [매니페스트를 사용하여 데이터 파일 지정](loading-data-files-using-manifest.md)
+ [Amazon S3에서 압축된 데이터 파일 로드](t_loading-gzip-compressed-data-files-from-S3.md)
+ [Amazon S3에서 고정 너비 데이터 로드](t_loading_fixed_width_data.md)
+ [Amazon S3에서 멀티바이트 데이터 로드](t_loading_unicode_data.md)
+ [Amazon S3에서 암호화된 데이터 파일 로드](c_loading-encrypted-files.md)