Utilisation de la commande COPY pour charger à partir d’Amazon S3 - Amazon Redshift

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

Utilisez la commande COPY 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 dans la référence SQL.

Les valeurs d'autorisation fournissent l' AWS autorisation dont votre cluster 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. La méthode d’authentification recommandée est celle qui consiste à spécifier le paramètre IAM_ROLE 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.

Pour vous authentifier à l'aide du paramètre IAM_ROLE, 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://mybucket/mydata' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';

Pour plus d’informations sur d’autres options d’autorisation, consultez Paramètres d’autorisation

Si vous voulez valider vos données sans charger le tableau, utilisez l’option NOLOAD avec la commande COPY.

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.

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

Note

Le compartiment Amazon S3 mybucket 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.

copy venue from 's3://mybucket/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.