

 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)」を参照してください。

許可の値により、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 コマンドで並列処理を使ってロードされます。ファイルの数はクラスター内のスライスの数の倍数である必要があります。ロードデータファイルを分割して大体同じサイズにし、圧縮後に 1 MB ～ 1 GB になるようにします。詳細については、「[圧縮および非圧縮のファイルからのデータのロード](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)