

 Amazon Redshift ne prendra plus en charge la création de nouveaux Python à UDFs partir du patch 198. UDFs Le Python existant continuera de fonctionner jusqu'au 30 juin 2026. Pour plus d’informations, consultez le [ billet de blog ](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Exemples UNLOAD
<a name="r_UNLOAD_command_examples"></a>

Ces exemples présentent différents paramètres de la commande UNLOAD. Les exemples de données TICKIT sont utilisés dans de nombreux exemples. Pour plus d’informations, consultez [Exemple de base de données](c_sampledb.md).

**Note**  
Ces exemples contiennent des sauts de ligne pour faciliter la lecture. N’incluez pas de sauts de ligne, ni d’espaces dans votre chaîne *credentials-args*.

## Déchargement de VENUE sur un fichier délimité par une barre verticale (délimiteur par défaut)
<a name="unload-examples-venue"></a>

L’exemple suivant décharge la table VENUE et écrit les données sur `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';
```

Par défaut, UNLOAD écrit un ou plusieurs fichiers par tranche. En supposant que le cluster comporte deux nœuds avec deux tranches par nœud, l’exemple précédent crée les fichiers dans `amzn-s3-demo-bucket`:

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

Afin de mieux différencier les fichiers de sortie, vous pouvez inclure un préfixe dans l’emplacement. L’exemple suivant décharge la table VENUE et écrit les données sur `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';
```

Le résultat est les quatre fichiers du dossier `unload`, en supposant encore une fois quatre tranches.

```
venue_pipe_0000_part_00
venue_pipe_0001_part_00
venue_pipe_0002_part_00
venue_pipe_0003_part_00
```

## Déchargement de la table LINEITEM dans des fichiers Parquet partitionnés
<a name="unload-examples-partitioned-parquet"></a>

L’exemple suivant décharge la table LINEITEM au format Parquet, partitionné par la colonne `l_shipdate`. 

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

En supposant que quatre tranches sont utilisées, les fichiers Parquet résultants sont partitionnés dynamiquement dans divers dossiers. 

```
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
...
```

**Note**  
Dans certains cas, la commande UNLOAD utilisait l’option INCLUDE comme indiqué dans l’instruction SQL suivante.   

```
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;
```
Dans ces cas, la colonne `l_shipdate` se trouve également dans les données des fichiers Parquet. Sinon, les données de colonne `l_shipdate` ne se trouvent pas dans les fichiers Parquet.

## Déchargez la table VENUE vers un fichier JSON
<a name="unload-examples-json"></a>

L’exemple suivant décharge la table VENUE et écrit les données en format JSON sur `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;
```

Vous trouverez ci-dessous des exemples de lignes de la table 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
```

Après le déchargement au format JSON, le format du fichier est similaire au suivant.

```
{"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}
```

## Décharger VENUE vers un fichier CSV
<a name="unload-examples-csv"></a>

L’exemple suivant décharge la table VENUE et écrit les données en format CSV sur `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;
```

Supposons que la table VENUE contienne les lignes suivantes.

```
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
```

Le fichier de déchargement ressemble à ce qui suit.

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

## Décharger VENUE dans un fichier CSV à l’aide d’un délimiteur
<a name="unload-examples-csv-delimiter"></a>

L’exemple suivant décharge la table VENUE et écrit les données au format CSV en utilisant le caractère de barre verticale (\$1) comme délimiteur. Le fichier déchargé est écrit dans `s3://amzn-s3-demo-bucket/unload/`. La table VENUE de cet exemple contient le caractère de barre verticale dans la valeur de la première ligne (`Pinewood Race|track`). Il le fait pour montrer que la valeur dans le résultat est entourée de guillemets doubles. Un guillemet double est échappé par un guillemet double, et le champ entier est entouré de guillemets doubles. 

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

Supposons que la table VENUE contienne les lignes suivantes.

```
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
```

Le fichier de déchargement ressemble à ce qui suit.

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

## Déchargement de VENUE avec un fichier manifeste
<a name="unload-examples-manifest"></a>

Pour créer un fichier manifeste, incluez l’option MANIFEST. L’exemple suivant décharger la table VENUE et écrit un fichier manifeste, ainsi que les fichiers de données, sur s3://amzn-s3-demo-bucket/venue\$1pipe\$1 : 

**Important**  
Si vous déchargez les fichiers avec l’option MANIFEST, vous devez utiliser l’option MANIFEST avec la commande COPY lorsque vous chargez les fichiers. Si vous utilisez le même préfixe pour charger les fichiers et que vous ne spécifiez pas l’option MANIFEST, la commande COPY échoue, car elle suppose que le fichier manifeste est un fichier de données.

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

Le résultat est ces cinq fichiers :

```
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
```

Voici le contenu du fichier 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"}
  ]
}
```

## Déchargement de VENUE avec MANIFEST VERBOSE
<a name="unload-examples-manifest-verbose"></a>

Lorsque vous spécifiez l’option MANIFEST VERBOSE, le fichier manifeste inclut les sections suivantes : 
+ La section `entries` répertorie le chemin Amazon S3, la taille de fichier et le nombre de lignes de chaque fichier. 
+ La section `schema` répertorie les noms de colonne, les types de données et la dimension de chaque colonne. 
+ La section `meta` montre la taille totale de fichier et le nombre total de lignes pour tous les fichiers. 

L’exemple suivant décharge la table VENUE à l’aide de l’option MANIFEST VERBOSE. 

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

Voici le contenu du fichier manifest.

```
{
  "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"
  }
}
```

## Déchargement de VENUE avec un en-tête
<a name="unload-examples-header"></a>

L’exemple suivant décharge VENUE avec une ligne d’en-tête.

```
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;
```

Voici le contenu du fichier de sortie avec une ligne d’en-tête.

```
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
```

## Déchargement de VENUE sur des fichiers plus petits
<a name="unload-examples-maxfilesize"></a>

Par défaut, la taille maximale d’un fichier est de 6,2 Go. Si les données de déchargement sont supérieures à 6,2 Go, UNLOAD crée un nouveau fichier pour chaque segment de données de 6,2 Go. Pour créer des fichiers plus petits, incluez le paramètre MAXFILESIZE. En supposant que la taille des données de l’exemple précédent était de 20 Go, la commande UNLOAD suivante écrit 20 fichiers de 1 Go chacun.

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

## Déchargement de VENUE en série
<a name="unload-examples-serial"></a>

Pour décharger en série, spécifiez PARALLEL OFF. UNLOAD écrit ensuite un fichier à la fois, jusqu’à un maximum de 6,2 Go par fichier. 

L’exemple suivant décharge la table VENUE et écrit les données en série sur `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;
```

Le résultat est un fichier nommé venue\$1serial\$1000. 

Si les données de déchargement sont supérieures à 6,2 Go, UNLOAD crée un nouveau fichier pour chaque segment de données de 6,2 Go. L’exemple suivant décharge la table LINEORDER et écrit les données en série sur `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;
```

Le résultat est la série de fichiers suivante.

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

Afin de mieux différencier les fichiers de sortie, vous pouvez inclure un préfixe dans l’emplacement. L’exemple suivant décharge la table VENUE et écrit les données sur `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';
```

Le résultat est les quatre fichiers du dossier `unload`, en supposant encore une fois quatre tranches.

```
venue_pipe_0000_part_00
venue_pipe_0001_part_00
venue_pipe_0002_part_00
venue_pipe_0003_part_00
```

## Chargement de VENUE à partir des fichiers de déchargement
<a name="unload-examples-load"></a>

Pour charger une table à partir d’un ensemble de fichiers de déchargement, il suffit d’inverser le processus à l’aide d’une commande COPY. L’exemple suivant crée une table, LOADVENUE, et charge la table dans les fichiers de données créés dans l’exemple précédent.

```
create table loadvenue (like venue);

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

Si vous avez utilisé l’option MANIFEST pour créer un fichier manifeste avec vos fichiers de déchargement, vous pouvez charger les données en utilisant le même fichier manifeste. Pour cela, vous utilisez une commande COPY avec l’option MANIFEST. L’exemple suivant charge les données à l’aide d’un fichier manifeste.

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

## Déchargement de VENUE sur des fichiers chiffrés
<a name="unload-examples-unload-encrypted"></a>

L'exemple suivant décharge la table VENUE vers un ensemble de fichiers chiffrés à l'aide d'une AWS KMS clé. Si vous spécifiez un fichier manifeste avec l’option ENCRYPTED, le fichier manifeste est également chiffré. Pour plus d'informations, consultez [Déchargement de fichiers de données chiffrés](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;
```

L’exemple suivant décharge la table VENUE sur un ensemble de fichiers chiffrés à l’aide d’une clé symétrique racine. 

```
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;
```

## Chargement de VENUE à partir de fichiers chiffrés
<a name="unload-examples-load-encrypted"></a>

Pour charger les tables à partir d’un ensemble de fichiers qui ont été créés en utilisant UNLOAD avec l’option ENCRYPT, inversez le processus en utilisant une commande COPY. Avec cette commande, utilisez l’option ENCRYPTED et spécifiez la clé symétrique racine qui a été utilisée pour la commande UNLOAD. L’exemple suivant charge la tableau LOADVENUE à partir des fichiers de données chiffrés créés dans l’exemple précédent.

```
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;
```

## Déchargement des données de VENUE dans un fichier délimité par les tabulations
<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';
```

Les fichiers de données de sortie se présentent ainsi : 

```
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
...
```

## Déchargement de VENUE dans un fichier de données de largeur fixe
<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';
```

Les fichiers de données de sortie se présentent comme suit. 

```
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
...
```

## Déchargement de VENUE sur un ensemble de fichiers compressés GZIP délimités par une tabulation
<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;
```

## Déchargement de VENUE dans un fichier texte compressé par 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;
```

## Déchargement des données qui contiennent un délimiteur
<a name="unload-examples-delimiter"></a>

Cet exemple utilise l’option ADDQUOTES pour décharger les données délimitées par une virgule, où certains champs de données contiennent une virgule.

D’abord, créez une table qui contient des guillemets.

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

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

Puis, déchargez les données à l’aide de l’option ADDQUOTES.

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

Les fichiers de données déchargés se présentent ainsi : 

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

## Décharger les résultats d’une requête de jointure
<a name="unload-examples-join"></a>

L’exemple suivant décharge les résultats d’une requête de jointure contenant une fonction de fenêtrage. 

```
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';
```

Les fichiers de sortie se présentent ainsi : 

```
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
...
```

## Décharger à l’aide de NULL AS
<a name="unload-examples-null-as"></a>

Par défaut, UNLOAD génère les valeurs null comme chaînes vides. Les exemples suivants montrent comment utiliser NULL AS pour remplacer les valeurs null par une chaîne de texte.

Pour ces exemples, nous ajoutons quelques valeurs null à la table VENUE.

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

Sélectionnez dans VENUE où VENUESTATE a la valeur null pour vérifier que les colonnes contiennent la valeur 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
```

Maintenant, exécutez UNLOAD sur la table VENUE à l’aide de l’option NULL AS pour remplacer les valeurs null par la chaîne de caractères ’`fred`’. 

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

L’exemple suivant du fichier de déchargement montre que les valeurs null ont été remplacées par `fred`. Il s’avère que certaines valeurs de VENUESEATS étaient également null et qu’elles ont été remplacées par `fred`. Même si le type de données pour VENUESEATS est entier, UNLOAD convertit les valeurs en texte dans les fichiers de déchargement, puis la commande COPY les reconvertit en type entier. Si vous déchargez dans un fichier à largeur fixe, la chaîne NULL AS ne doit pas être plus grande que la largeur du champ.

```
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
...
```

Pour charger une table à partir des fichiers de déchargement, utilisez une commande COPY avec la même option NULL AS. 

**Note**  
Si vous essayez de charger les valeurs null dans une colonne définie comme NOT NULL, la commande COPY échoue.

```
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';
```

Pour vérifier que les colonnes contiennent des chaînes null, et pas simplement des chaînes vides, sélectionnez LOADVENUENULLS et filtrez les valeurs 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         |

...
```

Vous pouvez exécuter une opération UNLOAD sur une table qui contient des valeurs null en utilisant le comportement par défaut NULL AS, puis copier à nouveau les données dans une table en utilisant le comportement NULL AS ; cependant, tous les champs non numériques de la table cible contiennent des chaînes vides, pas des valeurs null. Par défaut, UNLOAD convertit les chaînes null en chaînes vides (espace blanc ou longueur égale à zéro). COPY convertit les chaînes vides en NULL pour les colonnes numériques, mais insère des chaînes vides dans les colonnes non numériques. L’exemple suivant montre comment effectuer une opération UNLOAD suivi d’une opération COPY en utilisant le comportement par défaut NULL AS. 

```
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';
```

Dans ce cas, lorsque vous filtrez les valeurs null, seules les lignes où VENUESEATS contenait des valeurs null. Là où VENUESTATE contenait des valeurs null dans la table (VENUE), VENUESTATE dans la table cible (LOADVENUENULLS) contient des chaînes vides.

```
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         |
...
```

Pour charger des chaînes vides dans des colonnes non numériques comme NULL, incluez les options EMPTYASNULL ou BLANKSASNULL. Les deux peuvent être utilisés.

```
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;
```

Pour vérifier que les colonnes contiennent NULL, et pas seulement des espaces ou des chaînes vides, effectuez une sélection à partir de LOADVENUENULLS et filtrez les valeurs 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         |
     ...
```

## Décharger à l’aide du paramètre ALLOWOVERWRITE
<a name="unload-examples-allowoverwrite"></a>

Par défaut, UNLOAD ne remplace pas les fichiers existants du compartiment de destination. Par exemple, si vous exécutez la même instruction UNLOAD deux fois sans modifier les fichiers du compartiment de destination, la deuxième opération UNLOAD échoue. Pour remplacer les fichiers existants, y compris le fichier manifeste, spécifiez l’option ALLOWOVERWRITE.

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

## Décharger la table EVENT à l’aide des paramètres PARALLEL et MANIFEST
<a name="unload-examples-manifest-parallel"></a>

Vous pouvez décharger (UNLOAD) une table en parallèle et générer un fichier manifeste. Les fichiers de données Amazon S3 sont tous créés au même niveau et les noms présentent le modèle `0000_part_00` en suffixe. Le fichier manifeste se trouve au même niveau de dossier que les fichiers de données et présentent le texte `manifest` en suffixe. Le code SQL suivant décharge la table EVENT et crée des fichiers avec le nom de base `parallel`

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

La liste de fichiers Amazon S3 se présente comme suit.

```
 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
```

Le contenu du fichier `parallelmanifest` se présente comme suit.

```
{
  "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 }}
  ]
}
```

## Décharger la table EVENT à l’aide des PARALLEL OFFet MANIFEST
<a name="unload-examples-manifest-serial"></a>

Vous pouvez décharger (UNLOAD) une table en série (PARALLEL OFF) et générer un fichier manifeste. Les fichiers de données Amazon S3 sont tous créés au même niveau et les noms présentent le modèle `0000` en suffixe. Le fichier manifeste se trouve au même niveau de dossier que les fichiers de données et présentent le texte `manifest` en suffixe.

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

La liste de fichiers Amazon S3 se présente comme suit.

```
 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
```

Le contenu du fichier `serialmanifest` se présente comme suit.

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

## Décharger la table EVENT à l’aide des paramètres PARTITION BY et MANIFEST
<a name="unload-examples-manifest-partition"></a>

Vous pouvez décharger (UNLOAD) une table par partition et générer un fichier manifeste. Un dossier est créé dans Amazon S3 avec des dossiers de partition enfants, et les fichiers de données contenus dans les dossiers enfants ont un modèle de nom similaire à `0000_par_00`. Le fichier manifeste se trouve au même niveau de dossier que les dossiers enfants et se nomme `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;
```

La liste de fichiers Amazon S3 se présente comme suit.

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

Dans le dossier `partition` se trouvent les dossiers enfants avec le nom de la partition et le fichier manifeste. Le bas de la liste des dossiers contenus dans le dossier `partition` se présente comme suit.

```
 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
```

Dans le dossier `eventname=Zucchero/` figurent les fichiers de données, comme ci-dessous.

```
 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
```

Le bas du contenu du fichier `manifest` se présente comme suit.

```
{
  "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 }}
  ]
}
```

## Décharger la table EVENT à l’aide des paramètres MAXFILESIZE, ROWGROUPSIZE et MANIFEST
<a name="unload-examples-manifest-maxsize"></a>

Vous pouvez décharger (UNLOAD) une table en parallèle et générer un fichier manifeste. Les fichiers de données Amazon S3 sont tous créés au même niveau et les noms présentent le modèle `0000_part_00` en suffixe. Les fichiers de données Parquet générés sont limités à 256 Mo et la taille des groupes de lignes est de 128 Mo. Le fichier manifeste se trouve au même niveau de dossier que les fichiers de données et présente le suffixe `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;
```

La liste de fichiers Amazon S3 se présente comme suit.

```
 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
```

Le contenu du fichier `eventsizemanifest` se présente comme suit.

```
{
  "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 }}
  ]
}
```