

 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.

# Utilisation de la commande COPY pour charger à partir d’Amazon S3
<a name="t_loading-tables-from-s3"></a>

Utilisez la commande [COPY](r_COPY.md) pour charger une table en parallèle à partir de fichiers de données sur Amazon S3. Vous pouvez spécifier les fichiers à charger en utilisant un préfixe d’objet Amazon S3 ou un fichier manifeste.

La syntaxe pour spécifier les fichiers à charger en utilisant un préfixe est la suivante :

```
COPY <table_name> FROM 's3://<bucket_name>/<object_prefix>'
authorization;
```

 Le fichier manifeste est un fichier au format JSON qui répertorie les fichiers de données à charger. La syntaxe pour spécifier les fichiers à charger en utilisant un fichier manifeste est la suivante :

```
COPY <table_name> FROM 's3://<bucket_name>/<manifest_file>'
authorization
MANIFEST;
```

La table à charger doit déjà exister dans la base de données. Pour plus d’informations sur la création d’une table, consultez [CREATE TABLE](r_CREATE_TABLE_NEW.md) dans la référence SQL. 

Les valeurs d'*autorisation* fournissent l' AWS autorisation dont Amazon Redshift a besoin pour accéder aux objets Amazon S3. Pour plus d’informations sur les autorisations requises, consultez [Autorisations IAM pour les commandes COPY, UNLOAD et CREATE LIBRARY](copy-usage_notes-access-permissions.md#copy-usage_notes-iam-permissions). La méthode d’authentification recommandée est celle qui consiste à spécifier le paramètre IAM\$1ROLE et à fournir l’Amazon Resource Name (ARN) d’un rôle IAM avec les autorisations nécessaires. Pour plus d’informations, consultez [Contrôle d’accès basé sur les rôles](copy-usage_notes-access-permissions.md#copy-usage_notes-access-role-based). 

Pour vous authentifier à l'aide du paramètre IAM\$1ROLE, remplacez *<aws-account-id>* et *<role-name>* comme indiqué dans la syntaxe suivante. 

```
IAM_ROLE 'arn:aws:iam::<aws-account-id>:role/<role-name>'
```

L’authentification à l’aide d’un rôle IAM est présentée dans l’exemple suivant.

```
COPY customer 
FROM 's3://amzn-s3-demo-bucket/mydata' 
IAM_ROLE 'arn:aws:iam::0123456789012:role/MyRedshiftRole';
```

Pour plus d’informations sur d’autres options d’autorisation, consultez [Paramètres d’autorisation](copy-parameters-authorization.md)

Si vous voulez valider vos données sans charger le tableau, utilisez l’option NOLOAD avec la commande [COPY](r_COPY.md).

L’exemple suivant montre les toutes premières lignes des données, délimitées par une barre verticale, d’un fichier nommé `venue.txt`.

```
1|Toyota Park|Bridgeview|IL|0
2|Columbus Crew Stadium|Columbus|OH|0
3|RFK Stadium|Washington|DC|0
```

Avant le chargement du fichier sur Amazon S3, fractionnez le fichier en plusieurs fichiers, afin que la commande COPY puisse le charger à l’aide du traitement parallèle. Le nombre de fichiers doit être un multiple du nombre de tranches de votre cluster. Fractionnez vos fichiers de données de chargement de telle sorte que les fichiers soient à peu près de taille égale, entre 1 Mo et 1 Go après compression. Pour plus d'informations, consultez [Chargement de données à partir de fichiers compressés et non compressés](t_splitting-data-files.md).

Par exemple, le fichier `venue.txt` peut être fractionné en quatre fichiers, comme suit :

```
venue.txt.1
venue.txt.2
venue.txt.3
venue.txt.4
```

La commande COPY suivante charge la table VENUE à l’aide des données délimitées par une barre verticale des fichiers de données avec le préfixe ’venue’ dans le compartiment Amazon S3 `amzn-s3-demo-bucket`. 

**Note**  
Le compartiment Amazon S3 `amzn-s3-demo-bucket` des exemples suivants n’existe pas. Pour des exemples de commandes COPY qui utilisent les données réelles d’un compartiment Amazon S3 existant, consultez [Chargement des exemples de données](https://docs.aws.amazon.com/redshift/latest/gsg/cm-dev-t-load-sample-data.html).

```
COPY venue FROM 's3://amzn-s3-demo-bucket/venue'
IAM_ROLE 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
DELIMITER '|';
```

Si aucun objet Amazon S3 avec le préfixe de clé ’venue’ n’existe, le chargement échoue.

**Topics**
+ [Utilisation d’un manifeste pour spécifier les fichiers de données](loading-data-files-using-manifest.md)
+ [Chargement des fichiers de données compressés à partir d’Amazon S3](t_loading-gzip-compressed-data-files-from-S3.md)
+ [Chargement de données de largeur fixe à partir d’Amazon S3](t_loading_fixed_width_data.md)
+ [Chargement de données multioctets à partir d'Amazon S3](t_loading_unicode_data.md)
+ [Chargement de fichiers de données chiffrés à partir d’Amazon S3](c_loading-encrypted-files.md)

# Utilisation d’un manifeste pour spécifier les fichiers de données
<a name="loading-data-files-using-manifest"></a>

Vous pouvez utiliser un manifeste pour faire en sorte que la commande COPY charge tous les fichiers nécessaires, et seulement ceux-là, lors d’un chargement de données. Vous pouvez utiliser un manifeste pour charger les fichiers de différents compartiments ou les fichiers qui ne partagent pas le même préfixe. Au lieu de fournir un chemin d’objet pour la commande COPY, vous fournissez le nom d’un fichier texte au format JSON qui répertorie explicitement les fichiers à charger. L’URL du manifeste doit spécifier le nom de compartiment et le chemin d’objet complet du fichier, pas simplement un préfixe.

Pour plus d’informations sur les fichiers manifestes, consultez l’exemple de COPY [Utilisation d’un manifeste pour spécifier des fichiers de données](r_COPY_command_examples.md#copy-command-examples-manifest).

L’exemple suivant illustre le format JSON pour charger les fichiers de différents compartiments et avec des noms de fichiers commençant par des horodatages.

```
{
  "entries": [
    {"url":"s3://amzn-s3-demo-bucket1/2013-10-04-custdata", "mandatory":true},
    {"url":"s3://amzn-s3-demo-bucket1/2013-10-05-custdata", "mandatory":true},
    {"url":"s3://amzn-s3-demo-bucket2/2013-10-04-custdata", "mandatory":true},
    {"url":"s3://amzn-s3-demo-bucket2/2013-10-05-custdata", "mandatory":true}
  ]
}
```

L’indicateur facultatif `mandatory` spécifie si la commande COPY doit renvoyer une erreur si le fichier est introuvable. La valeur par défaut de `mandatory` est `false`. Quels que soient les paramètres obligatoires, la commande COPY s’arrête si aucun fichier n’est trouvé. 

L’exemple suivant exécute la commande COPY avec le manifeste de l’exemple précédent, qui s’appelle `cust.manifest`. 

```
COPY customer
FROM 's3://amzn-s3-demo-bucket/cust.manifest' 
IAM_ROLE 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
MANIFEST;
```

## Utilisation d’un manifeste créé par une commande UNLOAD
<a name="loading-data-files-using-unload-manifest"></a>

Il se peut qu’un manifeste créé par une opération [UNLOAD](r_UNLOAD.md) utilisant le paramètre MANIFEST contienne des clés non nécessaires à l’opération COPY. Par exemple, le manifeste `UNLOAD` suivant comprend une clé `meta` qui est requise pour une table externe Amazon Redshift Spectrum et pour charger des fichiers de données au format `ORC` ou `Parquet`. La clé `meta` contient une clé `content_length` avec une valeur correspondant à la taille réelle du fichier en octets. L’opération COPY nécessite uniquement la clé `url` et une clé `mandatory` facultative.

```
{
  "entries": [
    {"url":"s3://amzn-s3-demo-bucket/unload/manifest_0000_part_00", "meta": { "content_length": 5956875 }},
    {"url":"s3://amzn-s3-demo-bucket/unload/unload/manifest_0001_part_00", "meta": { "content_length": 5997091 }}
 ]
}
```

Pour plus d’informations sur les fichiers manifeste, consultez [Utilisation d’un manifeste pour spécifier les fichiers de données](r_COPY_command_examples.md#copy-command-examples-manifest).

# Chargement des fichiers de données compressés à partir d’Amazon S3
<a name="t_loading-gzip-compressed-data-files-from-S3"></a>

Pour charger des fichiers de données compressés à l'aide de gzip, lzop ou bzip2, incluez l'option correspondante : GZIP, LZOP ou. BZIP2

Par exemple, la commande suivante charge des fichiers compressés à l’aide de lzop.

```
COPY customer FROM 's3://amzn-s3-demo-bucket/customer.lzo' 
IAM_ROLE 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
DELIMITER '|' LZOP;
```

**Note**  
Si vous compressez un fichier de données avec la compression lzop et que vous utilisez l’option *--filter*, la commande COPY ne la prend pas en charge.

# Chargement de données de largeur fixe à partir d’Amazon S3
<a name="t_loading_fixed_width_data"></a>

Les fichiers de données de largeur fixe ont des longueurs uniformes pour chaque colonne de données. Chaque champ d’un fichier de données de largeur fixe possède exactement les mêmes longueur et position. Pour les données de type character (CHAR et VARCHAR) d’un fichier de données de largeur fixe, vous devez inclure les espaces de début ou de fin comme espaces réservés afin que la largeur demeure uniforme. Pour les entiers, vous devez utiliser des zéros comme espaces réservés. Un fichier de données de largeur fixe n’a pas de délimiteur pour séparer les colonnes.

Pour charger un fichier de données de largeur fixe dans une table existante, utilisez le paramètre FIXEDWIDTH de la commande COPY. Vos spécifications de table doivent correspondre à la valeur de fixedwidth\$1spec pour que les données se chargent correctement.

Pour charger les données de largeur fixe depuis un fichier vers une table, émettez la commande suivante :

```
COPY table_name FROM 's3://amzn-s3-demo-bucket/prefix' 
IAM_ROLE 'arn:aws:iam::0123456789012:role/MyRedshiftRole' 
FIXEDWIDTH 'fixedwidth_spec';
```

Le paramètre *fixedwidth\$1spec* est une chaîne qui contient un identificateur pour chaque colonne et la largeur de chaque colonne, avec le caractère deux-points comme séparateur. Les paires **column:width** sont délimitées par des virgules. L’identificateur peut être l’un de vos choix : chiffres, lettres ou une combinaison des deux. L’identificateur n’ayant aucune relation avec la table elle-même, les spécifications doivent contenir les colonnes dans le même ordre que la table.

Les deux exemples suivants présentent les mêmes spécifications, avec la première utilisant des identificateurs de type numérique (numeric) et la seconde des identificateurs de type chaîne (string) :

```
'0:3,1:25,2:12,3:2,4:6'
```

```
'venueid:3,venuename:25,venuecity:12,venuestate:2,venueseats:6'
```

L’exemple suivant montre un exemple de données de largeur fixe qui pourraient être chargées dans la table VENUE selon les spécifications précédentes :

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

La commande COPY suivante charge cet ensemble de données dans la table VENUE :

```
COPY venue
FROM 's3://amzn-s3-demo-bucket/data/venue_fw.txt' 
IAM_ROLE 'arn:aws:iam::0123456789012:role/MyRedshiftRole' 
FIXEDWIDTH 'venueid:3,venuename:25,venuecity:12,venuestate:2,venueseats:6';
```

# Chargement de données multioctets à partir d'Amazon S3
<a name="t_loading_unicode_data"></a>

Si vos données incluent des caractères non-ASCII codés sur plusieurs octets (par exemple, les caractères chinois ou cyrilliques), vous devez charger les données dans des colonnes VARCHAR. Le type de données VARCHAR prend en charge les caractères UTF-8 codés sur quatre octets, mais le type de données CHAR n’accepte que les caractères ASCII codés sur un octet. Vous ne pouvez pas charger de caractères codés sur cinq octets ou plus dans des tables Amazon Redshift. Pour plus d’informations sur CHAR et VARCHAR, consultez [Types de données](c_Supported_data_types.md).

Pour vérifier l’encodage utilisé par un fichier d’entrée, choisissez la commande Linux * `file` *: 

```
$ file ordersdata.txt
ordersdata.txt: ASCII English text
$ file uni_ordersdata.dat
uni_ordersdata.dat: UTF-8 Unicode text
```

# Chargement de fichiers de données chiffrés à partir d’Amazon S3
<a name="c_loading-encrypted-files"></a>

Vous pouvez utiliser la commande COPY pour charger les fichiers de données qui ont été chargées sur Amazon S3 à l’aide d’un chiffrement côté serveur, d’un chiffrement côté client ou des deux. 

La commande COPY prend en charge les types de chiffrement Amazon S3 suivants :
+ Chiffrement côté serveur avec des clés gérées par Amazon S3 (SSE-S3)
+ Chiffrement côté serveur avec AWS KMS keys (SSE-KMS)
+ Chiffrement côté client via une clé racine symétrique côté client

La commande COPY ne prend pas en charge les types de chiffrement Amazon S3 suivants :
+ Chiffrement côté serveur avec clés fournies par le client (SSE-C)
+ Chiffrement côté client à l'aide d'un AWS KMS key
+ Chiffrement côté client via une clé racine asymétrique fournie par le client

Pour plus d’informations sur le chiffrement Amazon S3, consultez [Protection des données à l’aide d’un chiffrement côté serveur](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html) et [Protection des données via le chiffrement côté client](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingClientSideEncryption.html) dans le Guide de l’utilisateur Amazon Simple Storage Service.

La commande [UNLOAD](r_UNLOAD.md) chiffre automatiquement les fichiers à l’aide de SSE-S3. Vous pouvez également effectuer un déchargement avec un chiffrement côté client ou SSE-KMS avec une clé symétrique gérée par le client. Pour plus d’informations, consultez [Déchargement de fichiers de données chiffrés](t_unloading_encrypted_files.md)

La commande COPY reconnaît et charge automatiquement les fichiers chiffrés avec SSE-S3 et SSE-KMS. Vous pouvez charger des fichiers chiffrés à l’aide d’une clé racine symétrique côté client en spécifiant l’option ENCRYPTED et en fournissant la valeur de la clé. Pour plus d'informations, consultez [Chargement de données chiffrées sur Amazon S3](t_uploading-encrypted-data.md).

Pour charger des fichiers de données chiffrés côté client, indiquez la valeur de la clé racine à l’aide du paramètre MASTER\$1SYMMETRIC\$1KEY et ajoutez l’option ENCRYPTED.

```
COPY customer FROM 's3://amzn-s3-demo-bucket/encrypted/customer' 
IAM_ROLE 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
MASTER_SYMMETRIC_KEY '<root_key>' 
ENCRYPTED
DELIMITER '|';
```

Pour charger des fichiers de données chiffrés compressés au format gzip, lzop ou bzip2, incluez l'option GZIP, LZOP ou ainsi que la valeur de la clé racine et l' BZIP2 option ENCRYPTED.

```
COPY customer FROM 's3://amzn-s3-demo-bucket/encrypted/customer' 
IAM_ROLE 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
MASTER_SYMMETRIC_KEY '<root_key>'
ENCRYPTED 
DELIMITER '|' 
GZIP;
```