Amazon Redshift는 2025년 11월 1일부터 새 Python UDF 생성을 더 이상 지원하지 않습니다. Python UDF를 사용하려면 이 날짜 이전에 UDF를 생성하세요. 기존 Python UDF는 정상적으로 계속 작동합니다. 자세한 내용은 블로그 게시물
COPY 명령을 사용하여 Amazon S3에서 로드
COPY 명령을 사용하여 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 섹션을 참조하세요.
authorization 값은 Amazon Redshift가 Amazon S3 객체에 액세스하는 데 필요한 AWS 권한 부여를 제공합니다. 필요한 권한에 대한 자세한 내용은 COPY, UNLOAD 및 CREATE LIBRARY 작업을 위한 IAM 권한 섹션을 참조하세요. 선호되는 인증 방법은 IAM_ROLE 파라미터를 지정하고 IAM 역할의 Amazon 리소스 이름(ARN)에 필요한 권한을 제공하는 것입니다. 자세한 정보는 역할 기반 액세스 제어을 참조하세요.
IAM_ROLE 파라미터를 사용하여 인증하려면 다음 구문을 참조하여 <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 명령과 함께 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~1GB로 거의 같아질 수 있도록 로딩 데이터 파일을 분할합니다. 자세한 내용은 압축 및 비압축 파일에서 데이터 로드 섹션을 참조하세요.
예를 들어 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 명령은 샘플 데이터 로드 섹션을 참조하세요.
COPY venue FROM 's3://amzn-s3-demo-bucket/venue' IAM_ROLE 'arn:aws:iam::0123456789012:role/MyRedshiftRole' DELIMITER '|';
키 접두사 'venue'가 있는 Amazon S3 객체가 존재하지 않는 경우 로드가 실패합니다.