

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

# UNLOAD
<a name="r_UNLOAD"></a>


|  | 
| --- |
|  COPY コマンドと UNLOAD コマンドのクライアント側の暗号化は、2025 年 4 月 30 日以降、新規のお客様は利用できなくなります。2025 年 4 月 30 日より前の 12 か月間に COPY コマンドと UNLOAD コマンドでクライアント側の暗号化を使用していた場合、2026 年 4 月 30 日までは COPY コマンドまたは UNLOAD コマンドでクライアント側の暗号化を引き続き使用できます。2026 年 4 月 30 日を過ぎると、COPY と UNLOAD でクライアント側の暗号化を使用できなくなります。できるだけ早く COPY と UNLOAD でサーバー側の暗号化を使用するよう切り替えることをお勧めします。COPY と UNLOAD でサーバー側の暗号化を既に使用している場合、変更はなく、クエリを変更せずに引き続き使用できます。COPY と UNLOAD の暗号化の詳細については、以下の ENCRYPTED パラメータを参照してください。  | 

Amazon S3 のサーバー側の暗号化 (SSE-S3) を使用して、Amazon S3 上の 1 つ、または複数のテキスト、JSON、または Apache Parquet ファイルにクエリの結果をアンロードします。AWS Key Management Service キー (SSE-KMS) を使用してサーバー側の暗号化を指定することもできます。

デフォルトでは、アンロードされたファイルの形式はパイプ区切り (`|`) テキストです。

Amazon S3 のファイルは、サイズ、拡張子、ファイル数、MAXFILESIZE パラメータを設定することで管理できます。S3 IP 範囲が許可リストに追加されていることを確認します。必要な S3 IP 範囲の詳細については、「[ネットワークの隔離](https://docs.aws.amazon.com//redshift/latest/mgmt/security-network-isolation.html#network-isolation)」を参照してください。

分析用の効率的なオープン列型ストレージ形式である Apache Parquet では、Amazon Redshift クエリの結果を Amazon S3 データレイクにアンロードできます。Parquet 形式は、テキスト形式と比較して、アンロードが最大 2 倍速く、さらにストレージ使用量が Amazon S3 で最大 6 倍少なくすみます。これにより、Amazon S3 で行ったデータ変換とエンリッチメントをオープン形式で Amazon S3 データレイクに保存できます。次に、Redshift Spectrum や、Amazon Athena、Amazon EMR、Amazon SageMaker AI などの他の AWS のサービスを使用して、データを分析できます。

UNLOAD コマンドの使用に関する詳細とシナリオ例については、「[Amazon Redshift でのデータのアンロード](c_unloading_data.md)」を参照してください。

## 必要な権限とアクセス許可
<a name="r_UNLOAD-permissions"></a>

UNLOAD コマンドを正常に実行するには、少なくともデータベース内のデータに対する SELECT 権限と、Amazon S3 ロケーションへの書き込みアクセス許可が必要です。UNLOAD コマンドで AWS リソースにアクセスするためのアクセス許可については、「[他の AWS リソースにアクセスするアクセス許可](copy-usage_notes-access-permissions.md)」を参照してください。

最小特権のアクセス許可を適用するために、以下の推奨事項に従って、このコマンドを実行するユーザーに必要なアクセス許可だけを付与してください。
+ ユーザーには、データに対する SELECT 権限が必要です。データベース権限を制限する方法については、「[GRANT](r_GRANT.md)」を参照してください。
+ ユーザーには、IAM ロールを引き受けて、AWS アカウントの Amazon S3 バケットに書き込むためのアクセス許可が必要です。データベースユーザーがロールを引き受けるためのアクセスを制限するには、「*Amazon Redshift 管理ガイド*」の「[IAM ロールへのアクセスの制限](https://docs.aws.amazon.com/redshift/latest/mgmt/authorizing-redshift-service-database-users.html)」を参照してください。
+ ユーザには、Amazon S3 バケットへのアクセス権が必要です。Amazon S3 バケットポリシーを使用してアクセス許可を制限するには、「*Amazon Simple Storage Service ユーザーガイド*」の「[Amazon S3 のバケットポリシー](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-policies.html)」を参照してください。

## 構文
<a name="r_UNLOAD-synopsis"></a>

```
UNLOAD ('select-statement')
TO 's3://object-path/name-prefix'
authorization
[ option, ...] 

where authorization is
IAM_ROLE { default | 'arn:aws:iam::{{<AWS アカウント-id-1>}}:role/{{<role-name>}}[,arn:aws:iam::{{<AWS アカウント-id-2>}}:role/{{<role-name>}}][,...]' }
            
where option is
| [ FORMAT [ AS ] ] CSV | PARQUET | JSON
| PARTITION BY ( column_name [, ... ] ) [ INCLUDE ]
| MANIFEST [ VERBOSE ]
| HEADER
| DELIMITER [ AS ] 'delimiter-char'
| FIXEDWIDTH [ AS ] 'fixedwidth-spec'
| ENCRYPTED [ AUTO ]
| BZIP2
| GZIP
| ZSTD
| ADDQUOTES
| NULL [ AS ] 'null-string'
| ESCAPE
| ALLOWOVERWRITE
| CLEANPATH
| PARALLEL [ { ON | TRUE } | { OFF | FALSE } ]
| MAXFILESIZE [AS] max-size [ MB | GB ]
| ROWGROUPSIZE [AS] size [ MB | GB ]
| REGION [AS] 'aws-region' }
| EXTENSION 'extension-name'
```

## パラメータ
<a name="unload-parameters"></a>

('*select-statement*')   
SELECT クエリ。クエリ結果をアンロードします。ほとんどの場合、クエリで ORDER BY 句を指定してソート順にデータをアンロードすることは有益です。この方法は、データの再ロード時にデータをソートするために必要な時間を節約します。  
クエリは、次に示すように一重引用符で囲む必要があります:   

```
('select * from venue order by venueid')
```
クエリに引用符が含まれている場合 (リテラル値を囲む場合など)、リテラルを 2 つの単一引用符で囲みます。また、クエリを単一引用符で囲む必要があります。  

```
('select * from venue where venuestate=''NV''')
```

TO 's3://*object-path/name-prefix*'  
Amazon Redshift が出力ファイルオブジェクト (MANIFEST が指定されている場合はマニフェストファイルを含む) を書き込む Amazon S3 上の絶対パス (バケット名を含む)。オブジェクト名には *name-prefix* というプレフィックスが付きます。`PARTITION BY` を使用すると、必要に応じて *name-prefix* 値の末尾にスラッシュ (/) が自動的に追加されます。さらにセキュリティを強化するために、UNLOAD は HTTPS 接続を使用して Amazon S3 に接続します。デフォルトでは、UNLOAD はスライスごとに 1 つ以上のファイルを書き込みます。次に示すように、UNLOAD は指定された名前のプレフィックスにスライス番号とパート番号を追加します:  
`{{<object-path>}}/{{<name-prefix>}}{{<slice-number>}}_part_{{<part-number>}}`.   
MANIFEST が指定された場合、マニフェストファイルは次のように書き込まれます:  
`{{<object_path>}}/{{<name_prefix>}}manifest`.   
PARALLEL が OFF に指定されている場合、データファイルは次のように書き込まれます。  
`{{<object_path>}}/{{<name_prefix>}}{{<part-number>}}`.   
UNLOAD は、Amazon S3 サーバー側の暗号化 (SSE) を使用して自動的に暗号化ファイルを作成します。MANIFEST を使用すると、マニフェストファイルも暗号化されます。COPY コマンドは、ロード操作中に自動的にサーバー側で暗号化されたファイルを読み取ります。Amazon S3 コンソールまたは API を使用すると、サーバー側で暗号化されたファイルをバケットから透過的にダウンロードできます。詳細については、「[サーバー側の暗号化を使用したデータの保護](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html)」を参照してください。  
REGION は、Amazon S3 バケットが Amazon Redshift データベースと同じ AWS リージョン にない場合に必須です。

*authorization*, \*  
UNLOAD コマンドには Amazon S3 にデータを書き込むための認可が必要です。UNLOAD コマンドは、COPY コマンドが認可に使用するのと同じパラメータを使用します。詳細については、COPY コマンドの構文リファレンスの「[認可パラメータ](copy-parameters-authorization.md)」を参照してください。

IAM\_ROLE { default \| 'arn:aws:iam::{{<AWS アカウント-id-1>}}:role/{{<role-name>}}'  <a name="unload-iam"></a>
デフォルトキーワードを使用して、UNLOAD コマンドの実行時にデフォルトとして設定されクラスターに関連付けられた IAM ロールの使用を、Amazon Redshift に指示します。  
クラスターが認証と認可に使用する IAM ロールの Amazon リソースネーム (ARN) を使用します。IAM\_ROLE を指定すると、ACCESS\_KEY\_ID および SECRET\_ACCESS\_KEY、SESSION\_TOKEN、または CREDENTIALS は使用できません。IAM\_ROLE は連鎖できます。詳細については、「*Amazon Redshift 管理ガイド*」の「[IAM ロールを連鎖する](https://docs.aws.amazon.com/redshift/latest/mgmt/authorizing-redshift-service.html#authorizing-redshift-service-chaining-roles)」を参照してください。

[ FORMAT [AS] ] CSV \| PARQUET \| JSON  <a name="unload-csv"></a>
デフォルトの形式を上書きするアンロード形式を指定するキーワード。  
CSV の場合、デフォルトの区切り文字としてカンマ (,) を使用して CSV 形式でテキストファイルをアンロードします。フィールドに区切り文字、二重引用符、改行文字、またはキャリッジリターンが含まれている場合、アンロードしたファイルのフィールドは二重引用符で囲まれます。データフィールド内の二重引用符は、追加の二重引用符でエスケープされます。ゼロ行がアンロードされると、Amazon Redshift は空の Amazon S3 オブジェクトを書き込む可能性があります。  
PARQUET の場合、Apache Parquet バージョン 1.0 形式のファイルにアンロードします。デフォルトでは、各行グループは SNAPPY 圧縮を使用して圧縮されます。Apache Parquet 形式の詳細については、「[Apache Parquet](https://parquet.apache.org/)」を参照してください。  
JSON の場合、各行に JSON オブジェクトが含まれている JSON ファイルにアンロードして、クエリ結果の完全なレコードを表します。Amazon Redshift は、クエリ結果に SUPER 列が含まれている場合に、ネストされた JSON の書き込みをサポートします 有効な JSON オブジェクトを作成するには、クエリ内の各列の名前が一意である必要があります。JSON ファイルでは、ブール値が `t` または `f` としてアンロードされ、NULL 値が `null` としてアンロードされます。ゼロ行がアンロードされると、Amazon Redshift は Amazon S3 オブジェクトを書き込まなくなります。  
キーワード FORMAT および AS はオプションです。CSV では ESCAPE、FIXEDWIDTH、または ADDQUOTES は使用できません。DELIMITER、FIXEDWIDTH、ADDQUOTES、ESCAPE、NULL AS、HEADER、GZIP、BZIP2、ZSTD では、PARQUET を使用できません。ENCRYPTED を使用した PARQUET は、AWS Key Management Serviceキー (SSE-KMS) を使用したサーバー側の暗号化でのみサポートされます。DELIMITER、HEADER、FIXEDWIDTH、ADDQUOTES、ESCAPE、または NULL AS では、JSON を使用できません。

PARTITION BY ( *column\_name* [, ... ] ) [INCLUDE]  <a name="unload-partitionby"></a>
アンロードオペレーションのパーティションキーを指定します。UNLOAD は、Apache Hive の規則に従って、パーティションキーの値に基づいて、出力ファイルをパーティションフォルダに自動的に分割します。例えば、パーティション year 2019 および month September に属する Parquet ファイルには、次のプレフィックス `s3://amzn-s3-demo-bucket/my_prefix/year=2019/month=September/000.parquet` があります。  
*column\_name* の値は、アンロードされるクエリ結果の列である必要があります。  
PARTITION BY で INCLUDE オプションを指定すると、アンロードされるファイルからパーティション列が削除されません。  
Amazon Redshift は、PARTITION BY 句で文字列リテラルをサポートしていません。

MANIFEST [ VERBOSE ]  
UNLOAD プロセスによって作成されたデータファイルの詳細を明示的に一覧表示するマニフェストファイルを作成します。マニフェストは、Amazon S3 に書き込まれた各ファイルの URL をリストする、JSON 形式のテキストファイルです。  
MANIFEST が VERBOSE オプションとともに指定されている場合、マニフェストには以下の詳細が含まれます。  
+ 列名とデータ型、および CHAR、VARCHAR、または NUMERIC データ型の場合は各列のディメンション。CHAR および VARCHAR データ型の場合、ディメンションは長さです。DECIMAL または NUMERIC データ型の場合、ディメンションは精度とスケールです。
+ 各ファイルにアンロードされた行数。HEADER オプションが指定されている場合、行数にはヘッダー行が含まれます。
+ アンロードされたすべてのファイルの合計ファイルサイズ、およびすべてのファイルにアンロードされた合計行数。HEADER オプションが指定されている場合、行数にはヘッダー行が含まれます。
+ 作成者。作成者は常に「Amazon Redshift」です。
VERBOSE は、MANIFEST の後にしか指定できません。  
マニフェストファイルは、アンロードファイルと同じ Amazon S3 パスプレフィックスに `<object_path_prefix>manifest` 形式で書き込まれます。例えば、UNLOAD で Amazon S3 パスプレフィックス '`s3://amzn-s3-demo-bucket/venue_`' が指定されている場合、マニフェストファイルの場所は '`s3://amzn-s3-demo-bucket/venue_manifest`' となります。

HEADER  
各出力ファイルの先頭に列名を含むヘッダー行を追加します。CSV、DELIMITER、ADDQUOTES、ESCAPE などのテキスト変換オプションもヘッダー行に適用されます。HEADER は FIXEDWIDTH と併用できません。

DELIMITER AS '*delimiter\_character*'  
パイプ文字 (\|)、カンマ (,)、タブ (\\t) など、出力ファイルのフィールドを区切るために使用する単一の ASCII 文字を指定します。テキストファイルのデフォルトの区切り文字はパイプ文字です。CSV ファイルのデフォルトの区切り文字はコンマ文字です。AS キーワードはオプションです。DELIMITER は FIXEDWIDTH と併用できません。データに区切り文字が含まれている場合、ESCAPE オプションを指定して、区切り文字をエスケープするか、ADDQUOTES を使って、データを二重引用符で囲む必要があります。代替案として、データ内に含まれていない区切り文字を指定します。

FIXEDWIDTH '*fixedwidth\_spec*'  
区切り文字によって区切られているのではなく、各列の幅が固定長のファイルにデータをアンロードします。*fixedwidth\_spec* は、列の数と列の幅を指定する文字列です。AS キーワードはオプションです。FIXEDWIDTH はデータを切り捨てないため、UNLOAD ステートメントの各列の指定は、少なくともその列の最長エントリの長さと同じになります。*fixedwidth\_spec* の形式を次に示します。  

```
'colID1:colWidth1,colID2:colWidth2, ...'
```
FIXEDWIDTH は DELIMITER または HEADER と併用できません。

ENCRYPTED [AUTO]  <a name="unload-parameters-encrypted"></a>
Amazon S3 上の出力ファイルを Amazon S3 サーバー側の暗号化を使用して暗号化するよう指定します。MANIFEST を指定すると、マニフェストファイルも暗号化されます。詳細については、「[暗号化されたデータファイルをアンロードする](t_unloading_encrypted_files.md)」を参照してください。ENCRYPTED パラメータを指定しない場合、UNLOAD は AWS 管理の暗号化キーによる Amazon S3 のサーバー側暗号化 (SSE-S3) 機能を使用して、暗号化されたファイルを自動的に作成します。  
ENCRYPTED を指定すると、AWS KMSキーによるサーバー側の暗号化 (SSE-KMS) 機能を使用して Amazon S3 へのアンロードを実行することも可能です。その場合は、[KMS_KEY_ID](#unload-parameters-kms-key-id)パラメータを使用してキー ID を指定します。[CREDENTIALS パラメータの使用](copy-parameters-authorization.md#copy-credentials) パラメータを KMS\_KEY\_ID パラメータと併用することはできません。KMS\_KEY\_ID を使用してデータに対して UNLOAD コマンドを実行すると、キーを指定せずに同じデータに対して COPY オペレーションを実行できます。  
ENCRYPTED AUTO が使用されている場合、UNLOAD コマンドは、ターゲット Amazon S3 バケットのプロパティ上にあるデフォルトの AWS KMS 暗号化キーを取得し、Amazon S3 に書き込まれたファイルに対し AWS KMS キーによる暗号化を行います。バケットにデフォルトの AWS KMS 暗号化キーがない場合、UNLOAD は Amazon Redshift サーバー側の暗号化に AWS 管理の暗号化キーを使用 (SSE-S3) して、暗号化されたファイルを自動的に作成します。このオプションは、master\_symmetric\_key を含む KMS\_KEY\_ID、MASTER\_SYMMETRIC\_KEY、または CREDENTIALS では使用できません。

KMS\_KEY\_ID '*key-id*'  <a name="unload-parameters-kms-key-id"></a>
Amazon S3 上のデータファイルの暗号化に使用する AWS Key Management Service (AWS KMS) キー の ID を指定します。詳細については、「[AWS Key Management Service とは](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html)」を参照してください。KMS\_KEY\_ID を指定する場合、[ENCRYPTED](#unload-parameters-encrypted)パラメータも指定する必要があります。KMS\_KEY\_ID を指定する場合、CREDENTIALS パラメータを使用して認証することはできません。代わりに [IAM\_ROLE パラメータの使用](copy-parameters-authorization.md#copy-iam-role) または [ACCESS\_KEY\_ID および SECRET\_ACCESS\_KEY パラメータの使用](copy-parameters-authorization.md#copy-access-key-id) のどちらかを使用します。

BZIP2   
スライスごとに、1 つまたは複数の bzip2 圧縮ファイルにデータをアンロードします。生成される各ファイルには、`.bz2`拡張子が付加されます。

GZIP   
スライスごとに、1 つまたは複数の gzip 圧縮ファイルにデータをアンロードします。生成される各ファイルには、`.gz`拡張子が付加されます。

ZSTD   
スライスごとに、1 つまたは複数の Zstandard 圧縮ファイルにデータをアンロードします。生成される各ファイルには、`.zst`拡張子が付加されます。

ADDQUOTES   
アンロードされた各データフィールドは引用符で囲まれるため、Amazon Redshift は区切り文字自体を含んでいるデータ値をアンロードすることができます。例えば、区切りがカンマの場合、次のデータのアンロードと再ロードを完了することができます。  

```
 "1","Hello, World" 
```
追加した引用符がない場合、文字列 `Hello, World` は 2 つの異なるフィールドとして解析されます。  
一部の出力形式は ADDQUOTES をサポートしていません。  
ADDQUOTES を使用した際にデータを再ロードするには、COPY で REMOVEQUOTES を指定する必要があります。

NULL AS '*null-string*'  
アンロードファイル内で NULL 値を表す文字列を指定します。このオプションを使用すると、選択したデータ内で検出された任意の NULL 値の代わりに、指定した文字列がすべての出力ファイルに挿入されます。このオプションを指定しない場合、NULL 値は次のようにアンロードされます。  
+ 区切り文字で区切られた出力に対するゼロ長文字列 
+ 固定幅出力に対するホワイトスペース文字列
固定幅のアンロードに対して NULL 文字列が指定され、出力列の幅が NULL 文字列の幅より小さい場合、次の動作が発生します。  
+ 空のフィールドは非文字列用の出力です。
+ 文字列に対してはエラーがレポートされます。
ユーザー定義の文字列が null 値を表す他のデータ型とは異なり、Amazon Redshift は JSON 形式を使用して SUPER データ列をエクスポートし、JSON 形式で決定されるように null として表します。その結果、SUPER データ列では、UNLOAD コマンドで使用される NULL [AS] オプションを無視します。

ESCAPE   
区切られたアンロードファイル内の CHAR と VARCHAR 列の場合、エスケープ文字 (`\`) が次の文字の前に必ず配置されます。  
+ ラインフィード: `\n`
+ キャリッジリターン: `\r`
+ アンロードデータ用に指定された区切り文字。
+ エスケープ文字: `\`
+ 引用符: `"` または `'` (ESCAPE と ADDQUOTES の両方を UNLOAD コマンドで指定した場合)。
ESCAPE オプションを指定して COPY を使ってデータをロードした場合、UNLOAD コマンドでも ESCAPE オプションを指定して可逆出力ファイルを生成する必要があります。同様に、ESCAPE オプションを使って UNLOAD を実行すると、同じデータを COPY する場合に ESCAPE を使用する必要があります。

ALLOWOVERWRITE   <a name="allowoverwrite"></a>
デフォルトでは、UNLOAD によってファイルの上書きが発生する可能性がある場合、その UNLOAD 操作は失敗します。ALLOWOVERWRITE が指定された場合、UNLOAD によって、マニフェストファイルを含めた既存のファイルが上書きされます。

CLEANPATH  <a name="cleanpath"></a>
CLEANPATH オプションは、TO 句で指定された Amazon S3 パスにある既存のファイルを削除してから、指定した場所にファイルをアンロードします。  
PARTITION BY 句を含めると、既存のファイルはパーティションフォルダからのみ削除され、UNLOAD オペレーションによって生成された新しいファイルを受信します。  
Amazon S3 バケットでの `s3:DeleteObject` 許可が必要です。詳細については、[Amazon Simple Storage Service ユーザーガイド](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-policy-language-overview.html)の *Amazon S3 でのポリシーとアクセス許可*を参照してください。CLEANPATH オプションを使用して削除したファイルは、完全に削除され、復元することはできません。ターゲット Amazon S3 バケットでバージョニングが有効になっている場合、CLEANPATH オプションを使用した UNLOAD では、以前のバージョンのファイルは削除されません。  
ALLOWOVERWRITE オプションを指定した場合、CLEANPATH オプションを指定することはできません。

PARALLEL   <a name="unload-parallel"></a>
デフォルトでは、UNLOAD は、クラスター内のスライスの数に応じて、データを複数のファイルに同時に書き込みます。デフォルトのオプションは ON または TRUE です。PARALLEL が OFF または FALSE の場合、UNLOAD は、ORDER BY 句が使用される場合はそれに従って絶対的にソートされた 1 つ以上のデータファイルに逐次書き込みます。データファイルの最大サイズは 6.2 GB です。したがって、例えば、13.4 GB のデータをアンロードする場合、UNLOAD は以下の 3 つのファイルを作成します。  

```
s3://amzn-s3-demo-bucket/key000    6.2 GB
s3://amzn-s3-demo-bucket/key001    6.2 GB
s3://amzn-s3-demo-bucket/key002    1.0 GB
```
UNLOAD コマンドは、並列処理を使用するように設計されています。特別な理由がなく、特にファイルが COPY コマンドを使用してテーブルをロードするために使用される場合には、PARALLEL を有効にしたままにすることをお勧めします。

MAXFILESIZE [AS] 最大サイズ [ MB \| GB ]   <a name="unload-maxfilesize"></a>
UNLOAD によって Amazon S3 で作成されるファイルの最大サイズを指定します。5 MB ～ 6.2 GB の十進値を指定します。AS キーワードはオプションです。デフォルト単位は MB です。MAXFILESIZE を指定しない場合、デフォルトの最大ファイルサイズは 6.2 GB です。マニフェストファイルが使用されている場合、このサイズは MAXFILESIZE に影響されません。

ROWGROUPSIZE [AS] サイズ [MB \| GB]   <a name="unload-rowgroupsize"></a>
行グループのサイズを指定します。大きいサイズを選択すると、行グループの数を減らし、ネットワーク通信量を減らすことができます。32 MBから 128 MB の間の整数値を指定します。AS キーワードはオプションです。デフォルト単位は MB です。  
ROWGROUPSIZE が指定されなかった場合、デフォルトのサイズは 32 MB です。このパラメータを使用するには、ストレージ形式が Parquet で、ノードタイプが ra3.4xlarge、ra3.16xlarge、ds2.8xlarge のいずれかである必要があります。

REGION [AS] '*aws-region*'  <a name="unload-region"></a>
ターゲットの Amazon S3 バケットがある AWS リージョン を指定します。Amazon Redshift データベースと同じ AWS リージョン にない Amazon S3 バケットへの UNLOAD には、REGION が必要です。  
*aws\_region* の値は、「*AWS 全般のリファレンス*」の「[Amazon Redshift のリージョンとエンドポイント](https://docs.aws.amazon.com/general/latest/gr/rande.html#redshift_region)」の表に記載されている AWS リージョンと一致している必要があります。  
デフォルトでは、UNLOAD は、ターゲットの Amazon S3 バケットは、Amazon Redshift データベースと同じ AWS リージョン にあると見なします。

拡張子「*extension-name*」  <a name="unload-extension"></a>
アンロードされたファイルの名前に付加するファイル拡張子を指定します。Amazon Redshift は検証を実行しないため、指定したファイル拡張子が正しいことを確認する必要があります。拡張子を指定せずに圧縮方法を指定した場合、Amazon Redshift は圧縮方法の拡張子のみをファイル名に追加します。拡張子を指定せず、圧縮方法も指定しなかった場合、ファイル名には何も追加されません。

## 使用に関する注意事項
<a name="unload-usage-notes"></a>

### 区切り文字が使われているすべての UNLOAD 操作に対する ESCAPE の使用
<a name="unload-usage-escape"></a>

区切り文字を使用して UNLOAD する場合、データにはその区切り文字、または ESCAPE オプションの説明に一覧表示されている任意の文字を含めることができます。この場合は、UNLOAD ステートメントで ESCAPE オプションを使用する必要があります。UNLOAD コマンドで ESCAPE オプションを使用しない場合、その後のアンロードされたデータを使用する COPY 操作は失敗する可能性があります。

**重要**  
必ず UNLOAD ステートメントと COPY ステートメントの両方で ESCAPE オプションを使用することを強くお勧めします。ただし、データに区切り文字が含まれていないこと、またはエスケープが必要となる可能性のあるその他の文字が含まれていないことが確実である場合は除きます。

### 浮動小数点精度の損失
<a name="unload-usage-floating-point-precision"></a>

アンロードと再ロードを連続して実行した浮動小数点データは精度を失っていることがあります。

### Limit 句
<a name="unload-usage-limit-clause"></a>

SELECT クエリは、外部の SELECT で LIMIT 句を使用することはできません。例えば、次の UNLOAD ステートメントは失敗します。

```
unload ('select * from venue limit 10')
to 's3://amzn-s3-demo-bucket/venue_pipe_' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';
```

代わりに、次の例のようにネストした LIMIT 句を使用してください。

```
unload ('select * from venue where venueid in
(select venueid from venue order by venueid desc limit 10)')
to 's3://amzn-s3-demo-bucket/venue_pipe_' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';
```

SELECT…INTO を使ってテーブルを入力するか、LIMIT 句を使って CREATE TABLE AS を実行し、そのテーブルからアンロードすることもできます。

### GEOMETRY データ型の列のアップロード
<a name="unload-usage-geometry"></a>

GEOMETRY 列はテキストまたは CSV 形式でのみアップロードできます。`FIXEDWIDTH` オプションを使用して、GEOMETRY データをアップロードすることはできません。データは、16 進数の Extended Well-Known Binary (EWKB) 形式でアップロードされます。EWKB データのサイズが 4 MB 以上の場合、後でテーブルにデータをロードできなくなるため、警告が表示されます。

### HLLSKETCH データ型のアンロード
<a name="unload-usage-hll"></a>

HLLSKETCH 列はテキストまたは CSV 形式でのみアンロードできます。`FIXEDWIDTH` オプションを使用して、HLLSKETCH データをアップロードすることはできません。データは、デンスの HyperLogLog スケッチの場合は Base64 形式、スパースの HyperLogLog スケッチの場合は JSON 形式でアンロードされます。詳細については、「[HyperLogLog 関数](hyperloglog-functions.md)」を参照してください。

次の例では、HLLSKETCH 列を含むテーブルをファイルにエクスポートします。

```
CREATE TABLE a_table(an_int INT, b_int INT);
INSERT INTO a_table VALUES (1,1), (2,1), (3,1), (4,1), (1,2), (2,2), (3,2), (4,2), (5,2), (6,2);

CREATE TABLE hll_table (sketch HLLSKETCH);
INSERT INTO hll_table select hll_create_sketch(an_int) from a_table group by b_int;

UNLOAD ('select * from hll_table') TO 's3://amzn-s3-demo-bucket/unload/'
IAM_ROLE 'arn:aws:iam::0123456789012:role/MyRedshiftRole' NULL AS 'null' ALLOWOVERWRITE CSV;
```

### VARBYTE データ型の列のアンロード
<a name="unload-usage-varbyte"></a>

VARBYTE列はテキストまたは CSV 形式でのみアンロードできます。データは 16 進数形式でアンロードされます。`FIXEDWIDTH` オプションを使用して、VARBYTE データをアンロードすることはできません。CSV に UNLOAD するための `ADDQUOTES` オプションはサポートされていません。VARBYTE 列は、PARTITIONED BY 列にすることはできません。

### FORMAT AS PARQUET 句
<a name="unload-parquet-usage"></a>

FORMAT AS PARQUET を使用する場合は、次の考慮事項に注意してください。
+ [Unload to Parquet (Parquet にアンロード)] では、ファイルレベルの圧縮は使用されません。各行グループは SNAPPY で圧縮されます。
+ MAXFILESIZE を指定しない場合、デフォルトの最大ファイルサイズは 6.2 GB です。MAXFILESIZE を使用して、5 MB～6.2 GB のファイルサイズを指定できます。実際のファイルサイズは、ファイルの書き込み時に概算されるため、指定した数と正確に等しくない場合があります。

  スキャンパフォーマンスを最大化するため、Amazon Redshift はまったく同じサイズの 32 MB の行グループを含む Parquet ファイルの作成を試みます。指定した MAXFILESIZE 値は、32 MB の最も近い倍数に自動的に切り捨てられます。例えば、MAXFILESIZE 200 MB を指定すると、アンロードされた各 Parquet ファイルは約 192 MB になります (32 MB の行グループ x 6 = 192 MB)。
+ 列で TIMESTAMPTZ データ形式が使用されている場合、タイムスタンプ値のみがアンロードされます。タイムゾーン情報はアンロードされません。
+ アンダースコア (\_) 文字またはピリオド (.) 文字で始まるファイル名プレフィックスを指定しないでください。Redshift Spectrum は、これらの文字で始まるファイルを隠しファイルとして処理し、無視します。

### PARTITION BY 句
<a name="unload-partitionby-usage"></a>

PARTITION BY を使用する場合は、次の考慮事項に注意してください。
+ パーティション列は出力ファイルに含まれていません。
+ 必ず、UNLOAD ステートメントで使用される SELECT クエリにパーティション列を含めてください。UNLOAD コマンドでは、任意の数のパーティション列を指定できます。ただし、ファイルの一部となる非パーティション列が少なくとも 1 つ存在する必要があるという制限があります。
+ パーティションキー値が null の場合、Amazon Redshift はそのデータをデフォルトパーティション (`partition_column=__HIVE_DEFAULT_PARTITION__`) に自動的にアンロードします。
+ UNLOAD コマンドでは、外部カタログへの呼び出しは行われません。新しいパーティションを既存の外部テーブルの一部として登録するには、別個の ALTER TABLE ..。ADD PARTITION ... コマンドを使用します。または、CREATE EXTERNAL TABLE コマンドを実行して、アンロードされたデータを新しい外部テーブルとして登録することもできます。また、AWS Glueクローラを使用して、データカタログにデータを入力することもできます。詳細については、*AWS Glueデベロッパーガイド*の「[クローラの定義](https://docs.aws.amazon.com/glue/latest/dg/add-crawler.html)」を参照してください。
+ MANIFEST オプションを使用する場合、Amazon Redshift はルート Amazon S3 フォルダにマニフェストファイルを 1 つだけ生成します。
+ パーティションキーとして使用できる列のデータ型は、SMALLINT、INTEGER、BIGINT、DECIMAL、REAL、BOOLEAN、CHAR、VARCHAR、DATE および TIMESTAMP です。

### ASSUMEROLE 権限を使用して、UNLOAD オペレーションの IAM ロールへのアクセスを許可する
<a name="unload-assumerole-privilege-usage"></a>

特定のユーザーおよびグループに UNLOAD オペレーション用の IAM ロールへのアクセスを提供するために、スーパーユーザーは IAM ロールに対する ASSUMEROLE 権限をユーザーおよびグループに付与できます。詳細については、[GRANT](r_GRANT.md)を参照してください。

### UNLOAD は、Amazon S3 アクセスポイントのエイリアスをサポートしていません
<a name="unload-usage-s3-access-point-alias"></a>

UNLOAD コマンドで、Amazon S3 アクセスポイントのエイリアスを使用することはできません。

## 例
<a name="r_UNLOAD-examples"></a>

UNLOAD コマンドの使用方法の例については、「[UNLOAD の例](r_UNLOAD_command_examples.md)」を参照してください。