

 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_command_examples"></a>

これらの例は、UNLOAD コマンドのさまざまなパラメータを示しています。多くの例では、TICKIT サンプルデータを使用しています。詳細については、「[サンプルデータベース](c_sampledb.md)」を参照してください。

**注記**  
次の例では読みやすくするため、改行しています。*credentials-args* 文字列には改行やスペースを含めないでください。

## パイプ区切りファイルへの VENUE のアンロード (デフォルト区切り文字）
<a name="unload-examples-venue"></a>

次の例は、VENUE テーブルをアンロードし、データを `s3://amzn-s3-demo-bucket/unload/` に書き込みます。

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

デフォルトでは、UNLOAD はスライスごとに 1 つ以上のファイルを書き込みます。ノードごとに 2 つのスライスを装備した 2 ノードクラスターを想定すると、前の例では `amzn-s3-demo-bucket` に以下のファイルが作成されます。

```
unload/0000_part_00
unload/0001_part_00
unload/0002_part_00
unload/0003_part_00
```

出力ファイルの違いをわかりやすくするため、ロケーションにプレフィックスを含めることができます。次の例は、VENUE テーブルをアンロードし、データを `s3://amzn-s3-demo-bucket/unload/venue_pipe_` に書き込みます。

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

結果として、`unload`フォルダに以下の 4 つのファイルが生成されます。ここでも 4 つのスライスを想定しています。

```
venue_pipe_0000_part_00
venue_pipe_0001_part_00
venue_pipe_0002_part_00
venue_pipe_0003_part_00
```

## パーティション化された Parquet ファイルへの LINEITEM テーブルのアンロード
<a name="unload-examples-partitioned-parquet"></a>

次の例では、`l_shipdate`列によって分割された Parquet 形式で LINEITEM テーブルをアンロードします。

```
unload ('select * from lineitem')
to 's3://amzn-s3-demo-bucket/lineitem/'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
PARQUET
PARTITION BY (l_shipdate);
```

4 つのスライスがある場合、生成される Parquet ファイルはさまざまなフォルダに動的に分割されます。

```
s3://amzn-s3-demo-bucket/lineitem/l_shipdate=1992-01-02/0000_part_00.parquet
                                             0001_part_00.parquet
                                             0002_part_00.parquet
                                             0003_part_00.parquet
s3://amzn-s3-demo-bucket/lineitem/l_shipdate=1992-01-03/0000_part_00.parquet
                                             0001_part_00.parquet
                                             0002_part_00.parquet
                                             0003_part_00.parquet
s3://amzn-s3-demo-bucket/lineitem/l_shipdate=1992-01-04/0000_part_00.parquet
                                             0001_part_00.parquet
                                             0002_part_00.parquet
                                             0003_part_00.parquet
...
```

**注記**  
場合によっては、次の SQL ステートメントに示すように、UNLOAD コマンドで INCLUDE オプションを使用します。  

```
unload ('select * from lineitem')
to 's3://amzn-s3-demo-bucket/lineitem/'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
PARQUET
PARTITION BY (l_shipdate) INCLUDE;
```
この場合、`l_shipdate`列は Parquet ファイルのデータにも含まれます。INCLUDE オプションを使用しない場合、`l_shipdate`列のデータは Parquet ファイルに含まれません。

## VENUE テーブルを JSON ファイルにアンロードする
<a name="unload-examples-json"></a>

次の例は、VENUE テーブルをアンロードし、そのデータを JSON 形式で `s3://amzn-s3-demo-bucket/unload/` に書き込みます。

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

VENUE テーブルのサンプル行を次に示します。

```
venueid | venuename                  | venuecity       | venuestate | venueseats
--------+----------------------------+-----------------+------------+-----------
      1 | Pinewood Racetrack         | Akron           | OH         | 0
      2 | Columbus "Crew" Stadium    | Columbus        | OH         | 0
      4 | Community, Ballpark, Arena | Kansas City     | KS         | 0
```

JSON へのアンロード後、ファイルの形式は次のようになります。

```
{"venueid":1,"venuename":"Pinewood Racetrack","venuecity":"Akron","venuestate":"OH","venueseats":0}
{"venueid":2,"venuename":"Columbus \"Crew\" Stadium ","venuecity":"Columbus","venuestate":"OH","venueseats":0}
{"venueid":4,"venuename":"Community, Ballpark, Arena","venuecity":"Kansas City","venuestate":"KS","venueseats":0}
```

## CSV ファイルへの VENUE のアップロード
<a name="unload-examples-csv"></a>

次の例は、VENUE テーブルをアンロードし、データを CSV 形式で `s3://amzn-s3-demo-bucket/unload/` に書き込みます。

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

VENUE テーブルに次の行が含まれているとします。

```
venueid | venuename                  | venuecity       | venuestate | venueseats
--------+----------------------------+-----------------+------------+-----------
      1 | Pinewood Racetrack         | Akron           | OH         | 0
      2 | Columbus "Crew" Stadium    | Columbus        | OH         | 0
      4 | Community, Ballpark, Arena | Kansas City     | KS         | 0
```

アンロードしたファイルは次のようになります。

```
1,Pinewood Racetrack,Akron,OH,0
2,"Columbus ""Crew"" Stadium",Columbus,OH,0
4,"Community, Ballpark, Arena",Kansas City,KS,0
```

## 区切り文字を使用した CSV ファイルへの VENUE のアンロード
<a name="unload-examples-csv-delimiter"></a>

次の例では、パイプ文字 (\$1) を区切り文字として使用して VENUE テーブルをアンロードし、データを CSV 形式で書き込みます。アンロードしたファイルは、`s3://amzn-s3-demo-bucket/unload/`に書き込まれます。この例の VENUE テーブルには、最初の行 (`Pinewood Race|track`) の値にパイプ文字が含まれています。これは、結果の値が二重引用符で囲まれることを示すためにそうされています。二重引用符がある場合は二重引用符でエスケープされ、フィールド全体が二重引用符で囲まれます。

```
unload ('select * from venue')
to 's3://amzn-s3-demo-bucket/unload/'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
CSV DELIMITER AS '|';
```

VENUE テーブルに次の行が含まれているとします。

```
venueid | venuename                  | venuecity       | venuestate | venueseats
--------+----------------------------+-----------------+------------+-------------
      1 | Pinewood Race|track        | Akron           | OH         | 0
      2 | Columbus "Crew" Stadium    | Columbus        | OH         | 0
      4 | Community, Ballpark, Arena | Kansas City     | KS         | 0
```

アンロードしたファイルは次のようになります。

```
1|"Pinewood Race|track"|Akron|OH|0
2|"Columbus ""Crew"" Stadium"|Columbus|OH|0
4|Community, Ballpark, Arena|Kansas City|KS|0
```

## マニフェストファイルを使用した VENUE のアンロード
<a name="unload-examples-manifest"></a>

マニフェストファイルを作成するには、MANIFEST オプションを指定します。次の例では、VENUE テーブルをアンロードし、データファイルとともにマニフェストファイルを s3://amzn-s3-demo-bucket/venue\$1pipe\$1 に書き込みます。

**重要**  
MANIFEST オプションを指定してファイルをアンロードする場合、そのファイルをロードするときに COPY コマンドで MANIFEST オプションを使用する必要があります。同じプレフィックスを使用してファイルをロードし、MANIFEST オプションを指定しない場合、COPY ではマニフェストファイルがデータファイルであると推測され、操作が失敗します。

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

結果は次の 5 ファイルです。

```
s3://amzn-s3-demo-bucket/venue_pipe_0000_part_00
s3://amzn-s3-demo-bucket/venue_pipe_0001_part_00
s3://amzn-s3-demo-bucket/venue_pipe_0002_part_00
s3://amzn-s3-demo-bucket/venue_pipe_0003_part_00
s3://amzn-s3-demo-bucket/venue_pipe_manifest
```

マニフェストファイルの内容を次に示します。

```
{
  "entries": [
    {"url":"s3://amzn-s3-demo-bucket/tickit/venue_0000_part_00"},
    {"url":"s3://amzn-s3-demo-bucket/tickit/venue_0001_part_00"},
    {"url":"s3://amzn-s3-demo-bucket/tickit/venue_0002_part_00"},
    {"url":"s3://amzn-s3-demo-bucket/tickit/venue_0003_part_00"}
  ]
}
```

## MANIFEST VERBOSE を使用した VENUE のアンロード
<a name="unload-examples-manifest-verbose"></a>

MANIFEST VERBOSE オプションを指定すると、マニフェストファイルに以下のセクションが含まれます。
+ `entries` セクションには、各ファイルの Amazon S3 パス、ファイルサイズ、および行数が一覧表示されます。
+ `schema` セクションには、列名、データ型、および各列のディメンションが一覧表示されます。
+ `meta` セクションには、すべてのファイルの合計ファイルサイズと行数が表示されます。

次の例では、MANIFEST VERBOSE オプションを使用して VENUE テーブルをアンロードします。

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

マニフェストファイルの内容を次に示します。

```
{
  "entries": [
    {"url":"s3://amzn-s3-demo-bucket/venue_pipe_0000_part_00", "meta": { "content_length": 32295, "record_count": 10 }},
    {"url":"s3://amzn-s3-demo-bucket/venue_pipe_0001_part_00", "meta": { "content_length": 32771, "record_count": 20 }},
    {"url":"s3://amzn-s3-demo-bucket/venue_pipe_0002_part_00", "meta": { "content_length": 32302, "record_count": 10 }},
    {"url":"s3://amzn-s3-demo-bucket/venue_pipe_0003_part_00", "meta": { "content_length": 31810, "record_count": 15 }}
  ],
  "schema": {
    "elements": [
      {"name": "venueid", "type": { "base": "integer" }},
      {"name": "venuename", "type": { "base": "character varying", 25 }},
      {"name": "venuecity", "type": { "base": "character varying", 25 }},
      {"name": "venuestate", "type": { "base": "character varying", 25 }},
      {"name": "venueseats", "type": { "base": "character varying", 25 }}
    ]
  },
  "meta": {
    "content_length": 129178,
    "record_count": 55
  },
  "author": {
    "name": "Amazon Redshift",
    "version": "1.0.0"
  }
}
```

## ヘッダーを使用した VENUE のアンロード
<a name="unload-examples-header"></a>

次の例では、ヘッダー行を指定して VENUE をアンロードします。

```
unload ('select * from venue where venueseats > 75000')
to 's3://amzn-s3-demo-bucket/unload/'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
header
parallel off;
```

以下に、出力ファイルの内容とヘッダー行を示します。

```
venueid|venuename|venuecity|venuestate|venueseats
6|New York Giants Stadium|East Rutherford|NJ|80242
78|INVESCO Field|Denver|CO|76125
83|FedExField|Landover|MD|91704
79|Arrowhead Stadium|Kansas City|MO|79451
```

## より小さいファイルへの VENUE のアンロード
<a name="unload-examples-maxfilesize"></a>

デフォルトでは、最大のファイルサイズは 6.2 GB です。アンロードするデータが 6.2 GB より大きい場合、UNLOAD は 6.2 GB のデータセグメントごとに新しいファイルを作成します。より小さなファイルを作成するには、MAXFILESIZE パラメータを含めます。前の例のデータのサイズを 20 GB とすると、次の UNLOAD コマンドは 各 1 GB サイズの 20 ファイルを作成します。

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

## VENUE の逐次アンロード
<a name="unload-examples-serial"></a>

逐次アンロードを行うには、PARALLEL を OFF にします。これにより、UNLOAD が一度に書き込むファイルの数は 1 つになります (ファイルにつき最大で 6.2 GB まで)。

次の例は、VENUE テーブルをアンロードし、データを `s3://amzn-s3-demo-bucket/unload/` に逐次書き込みます。

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

結果として、venue\$1serial\$1000 という名前のファイルが 1 つ生成されます。

アンロードするデータが 6.2 GB より大きい場合、UNLOAD は 6.2 GB のデータセグメントごとに新しいファイルを作成します。次の例は、LINEORDER テーブルをアンロードし、データを `s3://amzn-s3-demo-bucket/unload/` に逐次書き込みます。

```
unload ('select * from lineorder')
to 's3://amzn-s3-demo-bucket/unload/lineorder_serial_'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
parallel off gzip;
```

結果として、以下の一連のファイルが生成されます。

```
lineorder_serial_0000.gz
lineorder_serial_0001.gz
lineorder_serial_0002.gz
lineorder_serial_0003.gz
```

出力ファイルの違いをわかりやすくするため、ロケーションにプレフィックスを含めることができます。次の例は、VENUE テーブルをアンロードし、データを `s3://amzn-s3-demo-bucket/venue_pipe_` に書き込みます。

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

結果として、`unload`フォルダに以下の 4 つのファイルが生成されます。ここでも 4 つのスライスを想定しています。

```
venue_pipe_0000_part_00
venue_pipe_0001_part_00
venue_pipe_0002_part_00
venue_pipe_0003_part_00
```

## アンロードファイルからの VENUE のロード
<a name="unload-examples-load"></a>

一連のアンロードファイルからテーブルをロードするには、COPY コマンドを使用して単純にプロセスを逆順で実行します。次の例では、新しいテーブル LOADVENUE を作成し、前の例で作成したデータファイルからテーブルをロードします。

```
create table loadvenue (like venue);

copy loadvenue from 's3://amzn-s3-demo-bucket/venue_pipe_' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';
```

アンロードファイルとともにマニフェストファイルを作成するときに MANIFEST オプションを使用した場合は、同じマニフェストファイルを使用してデータをロードできます。これには、COPY コマンドで MANIFEST オプションを指定します。次の例では、マニフェストファイルを使用してデータをロードします。

```
copy loadvenue
from 's3://amzn-s3-demo-bucket/venue_pipe_manifest' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
manifest;
```

## 暗号化ファイルへの VENUE のアンロード
<a name="unload-examples-unload-encrypted"></a>

次の例では、AWS KMSキーを使用して、VENUE テーブルが一連の暗号化ファイルにアンロードされます。ENCRYPTED オプションでマニフェストファイルを指定すると、マニフェストファイルも暗号化されます。詳細については、「[暗号化されたデータファイルをアンロードする](t_unloading_encrypted_files.md)」を参照してください。

```
unload ('select * from venue')
to 's3://amzn-s3-demo-bucket/venue_encrypt_kms'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
kms_key_id '1234abcd-12ab-34cd-56ef-1234567890ab'
manifest
encrypted;
```

次の例では、ルート対称キーを使用して VENUE テーブルを一連の暗号化ファイルにアンロードします。

```
unload ('select * from venue')
to 's3://amzn-s3-demo-bucket/venue_encrypt_cmk'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
master_symmetric_key 'EXAMPLEMASTERKEYtkbjk/OpCwtYSx/M4/t7DMCDIK722'
encrypted;
```

## 暗号化ファイルからの VENUE のロード
<a name="unload-examples-load-encrypted"></a>

UNLOAD を ENCRYPT オプションとともに使用して作成された一連のファイルからテーブルをロードするには、COPY コマンドを使用してプロセスを逆順で実行します。同時にこのコマンドでは、ENCRYPTED オプションを使用ながら、UNLOAD コマンドに使用されたものと同じルート対称キーを指定します。次の例では、前の例で作成した暗号化されたデータファイルから LOADVENUE テーブルをロードします。

```
create table loadvenue (like venue);

copy loadvenue
from 's3://amzn-s3-demo-bucket/venue_encrypt_manifest'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
master_symmetric_key 'EXAMPLEMASTERKEYtkbjk/OpCwtYSx/M4/t7DMCDIK722'
manifest
encrypted;
```

## タブ区切りファイルへの VENUE データのアンロード
<a name="unload-examples-venue-tab"></a>

```
unload ('select venueid, venuename, venueseats from venue')
to 's3://amzn-s3-demo-bucket/venue_tab_'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
delimiter as '\t';
```

出力データファイルは次のようになります。

```
1	Toyota Park	Bridgeview	IL	0
2	Columbus Crew Stadium	Columbus	OH	0
3	RFK Stadium	Washington	DC	0
4	CommunityAmerica Ballpark	Kansas City	KS	0
5	Gillette Stadium	Foxborough	MA	68756
...
```

## 固定幅のデータファイルへの VENUE のアンロード
<a name="unload-venue-fixed-width"></a>

```
unload ('select * from venue')
to 's3://amzn-s3-demo-bucket/venue_fw_'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
fixedwidth as 'venueid:3,venuename:39,venuecity:16,venuestate:2,venueseats:6';
```

出力データファイルは次のようになります。

```
1  Toyota Park              Bridgeview  IL0
2  Columbus Crew Stadium    Columbus    OH0
3  RFK Stadium              Washington  DC0
4  CommunityAmerica BallparkKansas City KS0
5  Gillette Stadium         Foxborough  MA68756
...
```

## VENUE を一連のタブ区切り GZIP 圧縮ファイルにアンロードします。
<a name="unload-examples-venue-gzip"></a>

```
unload ('select * from venue')
to 's3://amzn-s3-demo-bucket/venue_tab_'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
delimiter as '\t'
gzip;
```

## VENUE を GZIP 圧縮テキストファイルにアンロードする
<a name="unload-examples-venue-extension-gzip"></a>

```
unload ('select * from venue')
to 's3://amzn-s3-demo-bucket/venue_tab_'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
extension 'txt.gz'
gzip;
```

## 区切り文字を含むデータのアンロード
<a name="unload-examples-delimiter"></a>

この例では、ADDQUOTES オプションを使って、実際の一部のデータフィールドにカンマが含まれているカンマ区切りデータをアンロードします。

最初に引用符を含むテーブルを作成します。

```
create table location (id int, location char(64));

insert into location values (1,'Phoenix, AZ'),(2,'San Diego, CA'),(3,'Chicago, IL');
```

次に ADDQUOTES オプションを使って、データをアンロードします。

```
unload ('select id, location from location')
to 's3://amzn-s3-demo-bucket/location_'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
delimiter ',' addquotes;
```

アンロードされたデータファイルは次のようになります。

```
1,"Phoenix, AZ"
2,"San Diego, CA"
3,"Chicago, IL"
...
```

## 結合クエリの結果のアンロード
<a name="unload-examples-join"></a>

次の例では、ウィンドウ関数を含む結合クエリの結果をアンロードします。

```
unload ('select venuecity, venuestate, caldate, pricepaid,
sum(pricepaid) over(partition by venuecity, venuestate
order by caldate rows between 3 preceding and 3 following) as winsum
from sales join date on sales.dateid=date.dateid
join event on event.eventid=sales.eventid
join venue on event.venueid=venue.venueid
order by 1,2')
to 's3://amzn-s3-demo-bucket/tickit/winsum'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';
```

出力ファイルは次のようになります。

```
Atlanta|GA|2008-01-04|363.00|1362.00
Atlanta|GA|2008-01-05|233.00|2030.00
Atlanta|GA|2008-01-06|310.00|3135.00
Atlanta|GA|2008-01-08|166.00|8338.00
Atlanta|GA|2008-01-11|268.00|7630.00
...
```

## NULL AS を使用したアンロード
<a name="unload-examples-null-as"></a>

UNLOAD では、デフォルトで空の文字列として Null 値を出力します。以下の例では、NULL AS を使用して Null のテキスト文字列を置換する方法を示します。

これらの例では、VENUE テーブルにいくつかの Null 値を追加します。

```
update venue set venuestate = NULL
where venuecity = 'Cleveland';
```

VENUESTATE が Null である VENUE から選択して、列に Null が格納されていることを確認します。

```
select * from venue where venuestate is null;

 venueid |        venuename         | venuecity | venuestate | venueseats
---------+--------------------------+-----------+------------+------------
      22 | Quicken Loans Arena      | Cleveland |            |          0
     101 | Progressive Field        | Cleveland |            |      43345
      72 | Cleveland Browns Stadium | Cleveland |            |      73200
```

次に、VENUE テーブルに対して NULL AS オプションを指定して UNLOAD を実行し、Null 値をキャラクタ文字列 '`fred`' で置き換えます。

```
unload ('select * from venue')
to 's3://amzn-s3-demo-bucket/nulls/'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
null as 'fred';
```

次のアンロードファイルの例は、Null 値が `fred` で置き換えられたことを示しています。この場合、VENUESEATS の値の一部も Null であったため、`fred`で置き換えられたことが分かります。VENUESEATS のデータ型が整数であっても、UNLOAD によってアンロードファイルの値がテキストに変換され、さらに COPY によって再び整数に戻されます。固定幅ファイルにアンロードする場合、NULL AS の文字列をフィールド幅以下にする必要があります。

```
248|Charles Playhouse|Boston|MA|0
251|Paris Hotel|Las Vegas|NV|fred
258|Tropicana Hotel|Las Vegas|NV|fred
300|Kennedy Center Opera House|Washington|DC|0
306|Lyric Opera House|Baltimore|MD|0
308|Metropolitan Opera|New York City|NY|0
  5|Gillette Stadium|Foxborough|MA|5
 22|Quicken Loans Arena|Cleveland|fred|0
101|Progressive Field|Cleveland|fred|43345
...
```

アンロードファイルからテーブルをロードするには、COPY コマンドで同じ NULL AS オプションを指定します。

**注記**  
NOT NULL として定義された列に Null のロードを試みた場合、COPY コマンドは失敗します。

```
create table loadvenuenulls (like venue);

copy loadvenuenulls from 's3://amzn-s3-demo-bucket/nulls/'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
null as 'fred';
```

列に単なる空の文字列ではなく Null が含まれていることを確認するには、LOADVENUENULLS から選択して Null でフィルタリングします。

```
select * from loadvenuenulls where venuestate is null or venueseats is null;

 venueid |        venuename         | venuecity | venuestate | venueseats
---------+--------------------------+-----------+------------+------------
      72 | Cleveland Browns Stadium | Cleveland |            |      73200
     253 | Mirage Hotel             | Las Vegas | NV         |
     255 | Venetian Hotel           | Las Vegas | NV         |
      22 | Quicken Loans Arena      | Cleveland |            |          0
     101 | Progressive Field        | Cleveland |            |      43345
     251 | Paris Hotel              | Las Vegas | NV         |

...
```

Null を含むテーブルに対してデフォルトの NULL AS の動作を使用して UNLOAD を実行し、次にデフォルトの NULL AS の動作を使用して COPY を実行してデータをテーブルに戻すことができます。ただし、ターゲットテーブルの数値以外のフィールドには、Null ではなく空の文字列が格納されます。デフォルトでは、UNLOAD によって Null が空の文字列 (空白またはゼロ長) に変換されます。COPY によって、数値列では空の文字列が Null に変換されますが、数値以外の列には空の文字列が挿入されます。次の例では、デフォルトの NULL AS 動作を使用して UNLOAD の後で COPY を実行する方法を示します。

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

truncate loadvenuenulls;
copy loadvenuenulls from 's3://amzn-s3-demo-bucket/nulls/'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';
```

この場合、Null でフィルタリングすると、VENUESEATS に Null が含まれていた行のみが表示されます。テーブル (VENUE) で VENUESTATE に Null が含まれていた場合、ターゲットテーブル (LOADVENUENULLS) の VENUESTATE には空の文字列が格納されます。

```
select * from loadvenuenulls where venuestate is null or venueseats is null;

 venueid |        venuename         | venuecity | venuestate | venueseats
---------+--------------------------+-----------+------------+------------
     253 | Mirage Hotel             | Las Vegas | NV         |
     255 | Venetian Hotel           | Las Vegas | NV         |
     251 | Paris Hotel              | Las Vegas | NV         |
...
```

数値以外の列に空の文字列を Null としてロードするには、EMPTYASNULL オプションまたは BLANKSASNULL オプションを含めます。両方を組み合わせて使用しても問題ありません。

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

truncate loadvenuenulls;
copy loadvenuenulls from 's3://amzn-s3-demo-bucket/nulls/'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' EMPTYASNULL;
```

列に単なる空白または空の文字列ではなく Null が含まれていることを確認するには、LOADVENUENULLS でその列を選択して、Null によるフィルタリングを行います。

```
select * from loadvenuenulls where venuestate is null or venueseats is null;

 venueid |        venuename         | venuecity | venuestate | venueseats
---------+--------------------------+-----------+------------+------------
      72 | Cleveland Browns Stadium | Cleveland |            |      73200
     253 | Mirage Hotel             | Las Vegas | NV         |
     255 | Venetian Hotel           | Las Vegas | NV         |
      22 | Quicken Loans Arena      | Cleveland |            |          0
     101 | Progressive Field        | Cleveland |            |      43345
     251 | Paris Hotel              | Las Vegas | NV         |
     ...
```

## ALLOWOVERWRITE パラメータを使用してアンロード
<a name="unload-examples-allowoverwrite"></a>

デフォルトでは、UNLOAD は送り先バケットの既存のファイルを上書きしません。例えば、送り先バケット内のファイルを変更せずに、同じ UNLOAD ステートメントを 2 回実行すると、2 回目の UNLOAD は失敗します。マニフェストファイルを含めて既存のファイルを上書きするには、ALLOWOVERWRITE オプションを指定します。

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

## PARALLEL パラメータと MANIFEST パラメータを使用して EVENT テーブルをアンロード
<a name="unload-examples-manifest-parallel"></a>

テーブルを並行して UNLOAD し、マニフェストファイルを生成できます。Amazon S3 データファイルはすべて同じレベルで作成され、名前の末尾にパターン `0000_part_00` が付きます。マニフェストファイルはデータファイルと同じフォルダレベルにあり、末尾にテキスト `manifest` が付きます。次の SQL は EVENT テーブルをアンロードし、ベース名 `parallel` でファイルを作成します。

```
unload ('select * from mytickit1.event')
to 's3://amzn-s3-demo-bucket/parallel'
iam_role 'arn:aws:iam::123456789012:role/MyRedshiftRole'
parallel on
manifest;
```

Amazon S3 ファイルのリストは次のようになります。

```
 Name                       Last modified                        Size                  
 parallel0000_part_00	-   August 2, 2023, 14:54:39 (UTC-07:00) 52.1 KB  
 parallel0001_part_00	-   August 2, 2023, 14:54:39 (UTC-07:00) 53.4 KB
 parallel0002_part_00	-   August 2, 2023, 14:54:39 (UTC-07:00) 52.1 KB
 parallel0003_part_00	-   August 2, 2023, 14:54:39 (UTC-07:00) 51.1 KB
 parallel0004_part_00	-   August 2, 2023, 14:54:39 (UTC-07:00) 54.6 KB
 parallel0005_part_00	-   August 2, 2023, 14:54:39 (UTC-07:00) 53.4 KB
 parallel0006_part_00	-   August 2, 2023, 14:54:39 (UTC-07:00) 54.1 KB
 parallel0007_part_00	-   August 2, 2023, 14:54:39 (UTC-07:00) 55.9 KB
 parallelmanifest       -   August 2, 2023, 14:54:39 (UTC-07:00) 886.0 B
```

`parallelmanifest` ファイルの内容は次のようになります。

```
{
  "entries": [
    {"url":"s3://amzn-s3-demo-bucket/parallel0000_part_00", "meta": { "content_length": 53316 }},
    {"url":"s3://amzn-s3-demo-bucket/parallel0001_part_00", "meta": { "content_length": 54704 }},
    {"url":"s3://amzn-s3-demo-bucket/parallel0002_part_00", "meta": { "content_length": 53326 }},
    {"url":"s3://amzn-s3-demo-bucket/parallel0003_part_00", "meta": { "content_length": 52356 }},
    {"url":"s3://amzn-s3-demo-bucket/parallel0004_part_00", "meta": { "content_length": 55933 }},
    {"url":"s3://amzn-s3-demo-bucket/parallel0005_part_00", "meta": { "content_length": 54648 }},
    {"url":"s3://amzn-s3-demo-bucket/parallel0006_part_00", "meta": { "content_length": 55436 }},
    {"url":"s3://amzn-s3-demo-bucket/parallel0007_part_00", "meta": { "content_length": 57272 }}
  ]
}
```

## PARALLEL OFF パラメータと MANIFEST パラメータを使用して EVENT テーブルをアンロード
<a name="unload-examples-manifest-serial"></a>

テーブルを順番にアンロード (PARALLEL OFF) して、マニフェストファイルを生成できます。Amazon S3 データファイルはすべて同じレベルで作成され、名前の末尾にパターン `0000` が付きます。マニフェストファイルはデータファイルと同じフォルダレベルにあり、末尾にテキスト `manifest` が付きます。

```
unload ('select * from mytickit1.event')
to 's3://amzn-s3-demo-bucket/serial'
iam_role 'arn:aws:iam::123456789012:role/MyRedshiftRole'
parallel off
manifest;
```

Amazon S3 ファイルのリストは次のようになります。

```
 Name                       Last modified                        Size                  
 serial0000             -   August 2, 2023, 15:54:39 (UTC-07:00) 426.7 KB  
 serialmanifest         -   August 2, 2023, 15:54:39 (UTC-07:00) 120.0 B
```

`serialmanifest` ファイルの内容は、次のようになります。

```
{
  "entries": [
    {"url":"s3://amzn-s3-demo-bucket/serial000", "meta": { "content_length": 436991 }}
  ]
}
```

## PARTITION BY パラメータと MANIFEST パラメータを使用して EVENT テーブルをアンロード
<a name="unload-examples-manifest-partition"></a>

テーブルをパーティションごとにアンロードし、マニフェストファイルを生成できます。Amazon S3 に、子パーティションフォルダを含む新しいフォルダが作成され、子フォルダ内のデータファイルは `0000_par_00` のような名前パターンで作成されます。マニフェストファイルは、`manifest` という名前の付いた子フォルダと同じフォルダレベルにあります。

```
unload ('select * from mytickit1.event')
to 's3://amzn-s3-demo-bucket/partition'
iam_role 'arn:aws:iam::123456789012:role/MyRedshiftRole'
partition by (eventname)
manifest;
```

Amazon S3 ファイルのリストは次のようになります。

```
 Name                   Type     Last modified                        Size                  
 partition           	Folder
```

`partition` フォルダ内には、パーティション名が付いた子フォルダとマニフェストファイルがあります。次に示すのは、`partition` フォルダ内のフォルダリストの最下部であり、次のようになります。

```
 Name                   Type      Last modified                        Size                  
 ...
 eventname=Zucchero/    Folder 
 eventname=Zumanity/    Folder 
 eventname=ZZ Top/      Folder  
 manifest          	    -	    August 2, 2023, 15:54:39 (UTC-07:00) 467.6 KB
```

`eventname=Zucchero/` フォルダには、次のようなデータファイルがあります。

```
 Name               Last modified                        Size                  
 0000_part_00	-   August 2, 2023, 15:59:19 (UTC-07:00) 70.0 B
 0001_part_00	-   August 2, 2023, 15:59:16 (UTC-07:00) 106.0 B
 0002_part_00	-   August 2, 2023, 15:59:15 (UTC-07:00) 70.0 B
 0004_part_00	-   August 2, 2023, 15:59:17 (UTC-07:00) 141.0 B
 0006_part_00	-   August 2, 2023, 15:59:16 (UTC-07:00) 35.0 B
 0007_part_00	-   August 2, 2023, 15:59:19 (UTC-07:00) 108.0 B
```

`manifest` ファイルの内容の最下部は次のようになります。

```
{
  "entries": [
    ...
    {"url":"s3://amzn-s3-demo-bucket/partition/eventname=Zucchero/007_part_00", "meta": { "content_length": 108 }},
    {"url":"s3://amzn-s3-demo-bucket/partition/eventname=Zumanity/007_part_00", "meta": { "content_length": 72 }}
  ]
}
```

## MAXFILESIZE、ROWGROUPSIZE、MANIFEST の各パラメータを使用して EVENT テーブルをアンロード
<a name="unload-examples-manifest-maxsize"></a>

テーブルを並行して UNLOAD し、マニフェストファイルを生成できます。Amazon S3 データファイルはすべて同じレベルで作成され、名前の末尾にパターン `0000_part_00` が付きます。生成される Parquet データファイルは 256 MB、行グループのサイズは 128 MB に制限されています。マニフェストファイルはデータファイルと同じフォルダレベルにあり、末尾に `manifest` が付きます。

```
unload ('select * from mytickit1.event')
to 's3://amzn-s3-demo-bucket/eventsize'
iam_role 'arn:aws:iam::123456789012:role/MyRedshiftRole'
maxfilesize 256 MB
rowgroupsize 128 MB
parallel on
parquet
manifest;
```

Amazon S3 ファイルのリストは次のようになります。

```
 Name                            Type      Last modified                        Size 
 eventsize0000_part_00.parquet	parquet	August 2, 2023, 17:35:21 (UTC-07:00) 24.5 KB
 eventsize0001_part_00.parquet	parquet	August 2, 2023, 17:35:21 (UTC-07:00) 24.8 KB
 eventsize0002_part_00.parquet	parquet	August 2, 2023, 17:35:21 (UTC-07:00) 24.4 KB
 eventsize0003_part_00.parquet	parquet	August 2, 2023, 17:35:21 (UTC-07:00) 24.0 KB
 eventsize0004_part_00.parquet	parquet	August 2, 2023, 17:35:21 (UTC-07:00) 25.3 KB
 eventsize0005_part_00.parquet	parquet	August 2, 2023, 17:35:21 (UTC-07:00) 24.8 KB
 eventsize0006_part_00.parquet	parquet	August 2, 2023, 17:35:21 (UTC-07:00) 25.0 KB
 eventsize0007_part_00.parquet	parquet	August 2, 2023, 17:35:21 (UTC-07:00) 25.6 KB
 eventsizemanifest                 -       August 2, 2023, 17:35:21 (UTC-07:00) 958.0 B
```

`eventsizemanifest` ファイルの内容は次のようになります。

```
{
  "entries": [
    {"url":"s3://amzn-s3-demo-bucket/eventsize0000_part_00.parquet", "meta": { "content_length": 25130 }},
    {"url":"s3://amzn-s3-demo-bucket/eventsize0001_part_00.parquet", "meta": { "content_length": 25428 }},
    {"url":"s3://amzn-s3-demo-bucket/eventsize0002_part_00.parquet", "meta": { "content_length": 25025 }},
    {"url":"s3://amzn-s3-demo-bucket/eventsize0003_part_00.parquet", "meta": { "content_length": 24554 }},
    {"url":"s3://amzn-s3-demo-bucket/eventsize0004_part_00.parquet", "meta": { "content_length": 25918 }},
    {"url":"s3://amzn-s3-demo-bucket/eventsize0005_part_00.parquet", "meta": { "content_length": 25362 }},
    {"url":"s3://amzn-s3-demo-bucket/eventsize0006_part_00.parquet", "meta": { "content_length": 25647 }},
    {"url":"s3://amzn-s3-demo-bucket/eventsize0007_part_00.parquet", "meta": { "content_length": 26256 }}
  ]
}
```