

 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.

# Déchargement de données dans Amazon Redshift
<a name="c_unloading_data"></a>

Pour décharger les données des tables de base de données sur un ensemble de fichiers d'un compartiment Amazon S3, vous pouvez utiliser la commande [UNLOAD](r_UNLOAD.md) avec une instruction SELECT. Vous pouvez décharger les données texte en un format délimité ou un format largeur fixe, quel que soit le format des données utilisé pour le chargement. Vous pouvez également demander que soient créés des fichiers GZIP compressées.

Vous pouvez limiter l'accès des utilisateurs à votre compartiment Amazon S3 à l'aide d'informations d'identification de sécurité temporaires.

**Topics**
+ [Déchargement de données vers Amazon S3](t_Unloading_tables.md)
+ [Déchargement de fichiers de données chiffrés](t_unloading_encrypted_files.md)
+ [Déchargement de données au format délimité ou au format à largeur fixe](t_unloading_fixed_width_data.md)
+ [Rechargement de données déchargées](t_Reloading_unload_files.md)

# Déchargement de données vers Amazon S3
<a name="t_Unloading_tables"></a>

Amazon Redshift scinde les résultats d'une instruction SELECT sur un ensemble de fichiers, un ou plusieurs fichiers par tranche de nœud, afin de simplifier le rechargement parallèle des données. Sinon, vous pouvez spécifier que [UNLOAD](r_UNLOAD.md) doit écrire les résultats en série sur un ou plusieurs fichiers en ajoutant l'option PARALLEL OFF. Vous pouvez limiter la taille des fichiers dans Amazon S3 en spécifiant le paramètre MAXFILESIZE. UNLOAD chiffre automatiquement les fichiers de données à l'aide du chiffrement côté serveur Amazon S3 (SSE-S3). 

Vous pouvez utiliser dans la commande n'importe quelle instruction SELECT qu'Amazon Redshift prend en charge, à l'exception d'une instruction utilisant une clause LIMIT dans la sélection externe. Par exemple, vous pouvez utiliser une instruction SELECT qui inclut des colonnes spécifiques ou qui utilise une clause WHERE pour joindre plusieurs tables. Si votre requête contient des guillemets (encadrant les valeurs littérales, par exemple), vous devez les faire précéder d'une séquence d'échappement dans le texte de la requête (\$1'). Pour plus d'informations, consultez la référence de la commande [SELECT](r_SELECT_synopsis.md). Pour plus d'informations sur l'utilisation d'une LIMIT, consultez [Notes d’utilisation](r_UNLOAD.md#unload-usage-notes) pour la commande UNLOAD.

Par exemple, la commande UNLOAD suivante envoie le contenu de la table VENUE au compartiment `s3://amzn-s3-demo-bucket/tickit/unload/` Amazon S3.

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

Les noms de fichiers créés par l'exemple précédent incluent le préfixe « `venue_` ».

```
venue_0000_part_00
venue_0001_part_00
venue_0002_part_00
venue_0003_part_00
```

Par défaut, UNLOAD écrit les données en parallèle dans plusieurs fichiers, selon le nombre de tranches du cluster. Pour écrire les données sur un seul fichier, spécifiez PARALLEL OFF. UNLOAD écrit les données en série, entièrement triées selon la clause ORDER BY, si elle est utilisée. La taille maximale d’un fichier de données est de 6,2 Go. Si la taille des données est supérieure à la valeur maximale, UNLOAD crée des fichiers supplémentaires, jusqu'à 6,2 Go chacun. 

L'exemple suivant écrit le contenu de la table VENUE sur un seul fichier. Un seul fichier est obligatoire, car la taille du fichier est inférieure à 6,2 Go.

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

**Note**  
La commande UNLOAD est conçue pour utiliser le traitement parallèle. Nous vous recommandons de laisser PARALLEL activé dans la plupart des cas, surtout si les fichiers sont utilisés pour charger les tables à l'aide d'une commande COPY.

En supposant que la taille totale des données de VENUE est de 5 Go, l'exemple suivant écrit le contenu de VENUE dans 50 fichiers de 100 Mo chacun.

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

Si vous incluez un préfixe dans la chaîne du chemin Amazon S3, UNLOAD utilise ce préfixe pour les noms de fichier. 

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

Vous pouvez créer un fichier manifeste qui répertorie les fichiers de déchargement en spécifiant l'option MANIFEST dans la commande UNLOAD. Le manifeste est un fichier texte au format JSON qui répertorie explicitement l'URL de chaque fichier écrit sur Amazon S3. 

L'exemple suivant inclut l'option MANIFEST. 

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

L'exemple suivant illustre un manifeste pour quatre fichiers de déchargement.

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

Le fichier manifeste peut être utilisé pour charger les mêmes fichiers en utilisant une commande COPY avec l'option MANIFEST. Pour plus d’informations, consultez [Utilisation d’un manifeste pour spécifier les fichiers de données](loading-data-files-using-manifest.md).

Une fois que vous avez terminé une opération UNLOAD, confirmez que les données ont été déchargées correctement en accédant au compartiment Amazon S3 sur lequel UNLOAD a écrit les fichiers. Vous verrez un ou plusieurs fichiers numérotés par tranche, en commençant par le numéro zéro. Si vous avez spécifié l'option MANIFEST, vous verrez également un fichier se terminant par « `manifest` ». Par exemple :

```
amzn-s3-demo-bucket/tickit/venue_0000_part_00 
amzn-s3-demo-bucket/tickit/venue_0001_part_00 
amzn-s3-demo-bucket/tickit/venue_0002_part_00 
amzn-s3-demo-bucket/tickit/venue_0003_part_00
amzn-s3-demo-bucket/tickit/venue_manifest
```

Vous pouvez obtenir par programmation une liste des fichiers qui ont été écrits dans Amazon S3 en appelant une opération de liste Amazon S3 une fois le DÉCHARGEMENT terminé. Vous pouvez également interroger STL\$1UNLO\$1LOG.

La requête suivante retourne le chemin d'accès des fichiers qui ont été créées par une opération UNLOAD. La fonction [PG\$1LAST\$1QUERY\$1ID](PG_LAST_QUERY_ID.md) retourne la requête la plus récente. 

```
select query, substring(path,0,40) as path
from stl_unload_log
where query=2320
order by path;

query |             path
-------+--------------------------------------
  2320 | s3://amzn-s3-demo-bucket/venue0000_part_00
  2320 | s3://amzn-s3-demo-bucket/venue0001_part_00
  2320 | s3://amzn-s3-demo-bucket/venue0002_part_00
  2320 | s3://amzn-s3-demo-bucket/venue0003_part_00
(4 rows)
```

Si la quantité de données est très importante, Amazon Redshift peut scinder les fichiers en plusieurs parties par tranche. Par exemple :

```
venue_0000_part_00
venue_0000_part_01
venue_0000_part_02
venue_0001_part_00
venue_0001_part_01
venue_0001_part_02
...
```

Comme la commande UNLOAD suivante comprend une chaîne entre guillemets dans l'instruction SELECT, les guillemets sont précédés d'une séquence d'échappement (`=\'OH\' '`).

```
unload ('select venuename, venuecity from venue where venuestate=\'OH\' ')
to 's3://amzn-s3-demo-bucket/tickit/venue/ ' 
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';
```

Par défaut, UNLOAD échoue plutôt que de remplacer les fichiers existants dans le compartiment de destination. 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échargement de fichiers de données chiffrés
<a name="t_unloading_encrypted_files"></a>

UNLOAD crée automatiquement les fichiers à l’aide du chiffrement côté serveur Amazon S3 avec les clés de chiffrement gérées par AWS (SSE-S3). Vous pouvez également spécifier le chiffrement côté serveur avec une AWS Key Management Service clé (SSE-KMS) ou le chiffrement côté client avec une clé gérée par le client. UNLOAD ne prend pas en charge le chiffrement côté serveur Amazon S3 utilisant une clé fournie par le client. Pour plus d'informations, consultez [ Protection des données à l'aide du chiffrement côté serveur](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html). 

Pour effectuer un déchargement vers Amazon S3 à l'aide d'un chiffrement côté serveur à l'aide d'une AWS KMS clé, utilisez le paramètre KMS\$1KEY\$1ID pour fournir l'ID de clé, comme indiqué dans l'exemple suivant.

```
unload ('select venuename, venuecity from venue')
to 's3://amzn-s3-demo-bucket/encrypted/venue_' 
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
KMS_KEY_ID '1234abcd-12ab-34cd-56ef-1234567890ab'
encrypted;
```

Si vous souhaitez fournir votre propre clé de chiffrement, vous pouvez créer des fichiers de données chiffrés côté client dans Amazon S3 en utilisant la commande UNLOAD avec l'option ENCRYPTED. UNLOAD utilise le même processus de chiffrement par enveloppe que celui que le chiffrement côté client Amazon S3 utilise. Vous pouvez ensuite utiliser la commande COPY avec l'option de chiffrement ENCRYPTED pour charger les fichiers chiffrés.

Voici comment cela fonctionne :

1. Vous créez une clé AES 256 bits codée en base64, que vous utiliserez comme clé de chiffrement privée, ou *clé symétrique racine*. 

1. Vous entrez une commande UNLOAD qui inclut votre clé symétrique racine et l'option ENCRYPTED. 

1. UNLOAD génère une clé one-time-use symétrique (appelée *clé symétrique d'enveloppe*) et un vecteur d'initialisation (IV), qu'il utilise pour chiffrer vos données. 

1. UNLOAD chiffre la clé symétrique par enveloppe à l'aide de votre clé symétrique racine. 

1. UNLOAD stocke ensuite les fichiers de données chiffrés dans Amazon S3 et stocke la clé d'enveloppe chiffrée et le vecteur d'initialisation comme métadonnées objet avec chaque fichier. La clé d'enveloppe chiffrée est stockée comme métadonnées objet `x-amz-meta-x-amz-key` et le vecteur d'initialisation est stocké comme métadonnées objet `x-amz-meta-x-amz-iv`. 

Pour plus d'informations sur le processus de chiffrement des enveloppes, consultez l'[article Chiffrement des données côté client avec le AWS SDK for Java et Amazon S3](https://aws.amazon.com/articles/2850096021478074). 

Pour décharger les fichiers de données chiffrés côté client, ajoutez la valeur de la clé racine à la chaîne des informations d'identification et incluez l'option ENCRYPTED. Si vous utilisez l'option MANIFEST, le fichier manifeste est également chiffré.

```
unload ('select venuename, venuecity from venue')
to 's3://amzn-s3-demo-bucket/encrypted/venue_' 
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
master_symmetric_key '<root_key>' 
manifest
encrypted;
```

Pour décharger des fichiers de données chiffrés compressés GZIP, incluez l'option GZIP, ainsi que la valeur de la clé racine et l'option ENCRYPTED.

```
unload ('select venuename, venuecity from venue')
to 's3://amzn-s3-demo-bucket/encrypted/venue_' 
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
master_symmetric_key '<root_key>' 
encrypted gzip;
```

Pour charger les fichiers de données chiffrés, ajoutez le paramètre MASTER\$1SYMMETRIC\$1KEY ayant la même valeur de clé racine et incluez l'option ENCRYPTED. 

```
copy venue from 's3://amzn-s3-demo-bucket/encrypted/venue_' 
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
master_symmetric_key '<root_key>' 
encrypted;
```

# Déchargement de données au format délimité ou au format à largeur fixe
<a name="t_unloading_fixed_width_data"></a>

Vous pouvez décharger les données au format délimité ou au format à largeur fixe. La sortie par défaut est délimitée par la barre verticale (\$1).

L'exemple suivant spécifie une virgule comme délimiteur : 

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

Les fichiers de sortie obtenus se présentent ainsi : 

```
20,Air Canada Centre,Toronto,ON,0
60,Rexall Place,Edmonton,AB,0
100,U.S. Cellular Field,Chicago,IL,40615
200,Al Hirschfeld Theatre,New York City,NY,0
240,San Jose Repertory Theatre,San Jose,CA,0
300,Kennedy Center Opera House,Washington,DC,0
...
```

Pour décharger le même jeu de résultats sur un fichier délimité par tabulation, entrez la commande suivante : 

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

Sinon, vous pouvez utiliser une spécification FIXEDWIDTH. Cette spécification se compose d'un identificateur pour chaque colonne de table et de la largeur de la colonne (nombre de caractères). Comme la commande UNLOAD échoue plutôt que de tronquer les données, spécifiez une largeur au moins égale à l'entrée la plus longue de cette colonne. Le déchargement de données de largeur fixe fonctionne de manière similaire au déchargement de données délimitées, sauf que le résultat obtenu ne contient aucun caractère de délimitation. Par exemple : 

```
unload ('select * from venue')
to 's3://amzn-s3-demo-bucket/tickit/venue/fw' 
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
fixedwidth '0:3,1:100,2:30,3:2,4:6';
```

Le résultat de la sortie de largeur fixe se présente comme suit : 

```
20 Air Canada Centre         Toronto      ON0
60 Rexall Place              Edmonton     AB0
100U.S. Cellular Field       Chicago      IL40615
200Al Hirschfeld Theatre     New York CityNY0
240San Jose Repertory TheatreSan Jose     CA0
300Kennedy Center Opera HouseWashington   DC0
```

Pour plus d'informations sur les spécifications de FIXEDWIDTH, consultez la commande [UNLOAD](r_UNLOAD.md).

# Rechargement de données déchargées
<a name="t_Reloading_unload_files"></a>

Pour recharger les résultats d'une opération de déchargement, vous pouvez utiliser une commande COPY.

L'exemple suivant illustre un cas simple dans lequel la table VENUE est déchargée à l'aide d'un fichier manifeste, tronquée et rechargée. 

```
unload  ('select * from venue order by venueid')
to 's3://amzn-s3-demo-bucket/tickit/venue/reload_' 
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' 
manifest 
delimiter '|';

truncate venue;

copy venue 
from 's3://amzn-s3-demo-bucket/tickit/venue/reload_manifest' 
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
manifest 
delimiter '|';
```

Une fois qu'elle a été à nouveau chargée, la table VENUE se présente comme suit : 

```
select * from venue order by venueid limit 5;

 venueid |         venuename         |  venuecity  | venuestate | venueseats
---------+---------------------------+-------------+------------+-----------
       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
(5 rows)
```