COPY - Amazon Redshift

COPY

Charge des données dans une table depuis des fichiers de données ou une table Amazon DynamoDB. Les fichiers peuvent être situés dans un compartiment Amazon Simple Storage Service (Amazon S3), un cluster Amazon EMR ou un hôte distant auquel on accède à l'aide d'une connexion SSH (Secure Shell).

Note

Les tables externes de Amazon Redshift Spectrum sont en lecture seule. Vous ne pouvez pas copier (COPY) une table externe.

La commande COPY ajoute les nouvelles données d'entrée à toutes les lignes existantes de la table.

La taille maximale d'une seule ligne d'entrée à partir de n'importe quelle source est de 4 Mo.

Note

Pour utiliser la commande COPY, vous devez avoir le privilège INSERT pour la table Amazon Redshift.

Syntaxe de la commande COPY

COPY table-name [ column-list ] FROM data_source authorization [ [ FORMAT ] [ AS ] data_format ] [ parameter [ argument ] [, ... ] ]

Présentation de la syntaxe de la commande COPY

Vous pouvez effectuer une opération COPY avec aussi peu que trois paramètres : un nom de table, une source de données et l'autorisation d'accéder aux données.

Amazon Redshift étend la fonctionnalité de la commande COPY pour vous permettre de charger les données dans plusieurs formats de données à partir de plusieurs sources de données, de contrôler l'accès pour charger les données, de gérer les transformations des données et de gérer l'opération de chargement.

Cette section présente les paramètres de la commande COPY requis et regroupe les paramètres facultatifs par fonction. Les rubriques suivantes décrivent chaque paramètre et expliquent comment différentes options fonctionnent ensemble. Vous pouvez également accéder directement à une description du paramètre à l'aide de la liste alphabétique des paramètres.

Paramètres requis

La commande COPY nécessite trois éléments :

La commande COPY la plus simple utilise le format suivant.

COPY table-name FROM data-source authorization;

L'exemple suivant crée une table nommée CATDEMO et puis charge la table avec des exemples de données à partir d'un fichier de données dans Amazon S3 nommé category_pipe.txt.

create table catdemo(catid smallint, catgroup varchar(10), catname varchar(10), catdesc varchar(50));

Dans l'exemple suivant, la source de données de la commande COPY est un fichier de données nommé category_pipe.txt dans le dossier tickit d'un compartiment Amazon S3 nommé awssampledbuswest2. La commande COPY est autorisée à accéder au compartiment Amazon S3 grâce à un rôle AWS Identity and Access Management (IAM). Si votre cluster comporte un rôle IAM existant avec la permission d'accès à Amazon S3 attaché, vous pouvez remplacer le nom Amazon Resource Name (ARN) de votre rôle dans la commande COPY suivante et l'exécuter.

copy catdemo from 's3://awssampledbuswest2/tickit/category_pipe.txt' iam_role 'arn:aws:iam::<aws-account-id>:role/<role-name>' region 'us-west-2';

Pour connaître les étapes de création d'un rôle IAM, consultez Étape 2 : Créer un rôle IAM dans le manuel Amazon Redshift Mise en route. Pour obtenir des instructions complètes sur l'utilisation des commandes COPY pour charger les exemples de données, y compris des instructions relatives au chargement des données provenant d'autres régions AWS, consultez Étape 6 : Charger des exemples de données depuis Amazon S3 dans le manuel Amazon Redshift Mise en route.

table-name

Nom de la table cible de la commande COPY. La table doit déjà exister dans la base de données. La table peut être temporaire ou permanente. La commande COPY ajoute les nouvelles données d'entrée à toutes les lignes existantes de la table.

FROM data-source

Emplacement des données sources à charger dans la table cible. Un fichier manifeste peut être spécifié avec des sources de données.

Le référentiel de données le plus couramment utilisé est un compartiment Amazon S3. Vous pouvez également charger des fichiers de données situés dans un cluster Amazon EMR, une instance Amazon EC2 ou un hôte distant auquel votre cluster peut accéder à l'aide d'une connexion SSH, ou vous pouvez charger directement depuis une table DynamoDB.

Autorisation

Clause indiquant la méthode que votre cluster utilise pour l'authentification et l'autorisation d'accéder aux autres ressources AWS. La commande COPY a besoin de l'autorisation pour accéder aux données dans une autre ressource AWS, y compris Amazon S3, Amazon EMR, Amazon DynamoDB et Amazon EC2. Vous pouvez fournir cette autorisation en faisant référence à un rôle IAM qui est attaché à votre cluster ou en fournissant l'ID de clé d'accès et la clé d'accès secrète pour un utilisateur IAM.

Paramètres facultatifs

Le cas échéant, vous pouvez spécifier comment la commande COPY mappe les données de champ aux colonnes dans la table cible, définir les attributs de données sources pour activer la commande COPY afin de lire et d'analyser correctement les données sources et gérer les opérations que la commande COPY effectue pendant le processus de chargement.

Mappage de colonnes

Par défaut, la commande COPY insère des valeurs de champ dans les colonnes de la table cible dans le même ordre que les champs se présentent dans les fichiers de données. Si l'ordre de la colonne par défaut ne fonctionne pas, vous pouvez spécifier une liste de colonnes ou utiliser des expressions JSONPath pour mapper des champs de données sources aux colonnes cibles.

Paramètres du format de données

Vous pouvez charger les données à partir de fichiers texte au format JSON, dans des fichiers de valeurs séparées par des virgules, par des caractères, à largeur fixe (CSV), ou à partir de fichiers Avro.

Par défaut, la commande COPY attend que les données sources se trouvent dans des fichiers texte UTF-8 séparés par des caractères. Le délimiteur par défaut est une barre verticale ( | ). Si les données sources sont dans un autre format, utilisez les paramètres suivants pour spécifier le format des données.

Paramètres de conversion de données

Lorsqu'elle charge la table, la commande COPY tente implicitement de convertir les chaînes dans les données sources vers le type de données de la colonne cible. Si vous devez spécifier une conversion qui est différente du comportement par défaut, ou si la conversion par défaut entraîne des erreurs, vous pouvez gérer les conversions de données en spécifiant les paramètres suivants.

Opérations de chargement de données

Gérez le comportement par défaut de l'opération de chargement pour le dépannage ou pour réduire les temps de chargement en spécifiant les paramètres suivants.

Utilisation de la commande COPY

Pour plus d'informations sur la façon d'utiliser la commande COPY, consultez les rubriques suivantes :