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

UNLOAD

Décharge le résultat d’une requête dans un ou plusieurs fichiers texte, JSON ou Apache Parquet dans Amazon S3, à l’aide d’un chiffrement côté serveur Amazon S3 (SSE-S3). Vous pouvez également spécifier un chiffrement côté serveur avec une clé AWS Key Management Service (SSE-KMS) ou un chiffrement côté client avec une clé gérée par le client.

Par défaut, le fichier déchargé est au format texte délimité par une barre verticale ( | ).

Vous pouvez gérer la taille des fichiers sur Amazon S3 et, par extension, le nombre de fichiers, en définissant le paramètre MAXFILESIZE. Assurez-vous que les plages d’adresses IP S3 sont ajoutées à votre liste des autorisations. Pour plus d’informations sur les plages d’adresses IP S3 requises, consultez Isolement de réseau.

Vous pouvez transférer les résultats d’une requête Amazon Redshift vers le lac de données Amazon S3 dans Apache Parquet, un format de stockage en colonnes ouvert et efficace dédié à l’analyse. Le format Parquet est jusqu’à deux fois plus rapide à décharger et consomme jusqu’à six fois mois de stockage dans Amazon S3, en comparaison avec les formats texte. Cela vous permet de sauvegarder la transformation et l’enrichissement des données que vous avez faits dans Amazon S3 dans votre lac de données Amazon S3 dans un format ouvert. Vous pouvez ensuite analyser vos données avec Redshift Spectrum et d'autres AWS services tels qu'Amazon Athena, Amazon EMR et Amazon. SageMaker

Pour en savoir plus sur l’utilisation de la commande UNLOAD et pour voir des exemples de scénarios, consultez Déchargement des données.

Privilèges et autorisations nécessaires

Pour que la commande UNLOAD aboutisse, il est nécessaire de disposer au moins du privilège SELECT sur les données de la base de données, ainsi que de l’autorisation d’écrire à l’emplacement Amazon S3. Les autorisations nécessaires sont similaires à celles de la commande COPY. Pour en savoir plus sur les autorisations de la commande COPY, consultez Autorisations d’accès aux autres ressources AWS.

Syntaxe

UNLOAD ('select-statement') TO 's3://object-path/name-prefix' authorization [ option, ...] where authorization is IAM_ROLE { default | 'arn:aws:iam::<Compte AWS-id-1>:role/<role-name>[,arn:aws:iam::<Compte AWS-id-2>:role/<role-name>][,...]' } where option is | [ FORMAT [ AS ] ] CSV | PARQUET | JSON | PARTITION BY ( column_name [, ... ] ) [ INCLUDE ] | MANIFEST [ VERBOSE ] | HEADER | DELIMITER [ AS ] 'delimiter-char' | FIXEDWIDTH [ AS ] 'fixedwidth-spec' | ENCRYPTED [ AUTO ] | BZIP2 | GZIP | ZSTD | ADDQUOTES | NULL [ AS ] 'null-string' | ESCAPE | ALLOWOVERWRITE | CLEANPATH | PARALLEL [ { ON | TRUE } | { OFF | FALSE } ] | MAXFILESIZE [AS] max-size [ MB | GB ] | ROWGROUPSIZE [AS] size [ MB | GB ] | REGION [AS] 'aws-region' } | EXTENSION 'extension-name'

Paramètres

(’instruction_select’)

Requête SELECT. Les résultats de la requête sont déchargés. Dans la plupart des cas, il est utile de décharger les données dans un ordre trié en spécifiant une clause ORDER BY dans la requête. Cette approche économise le temps nécessaire au tri des données lors de leur rechargement.

La requête doit être placée entre guillemets simples comme illustré ci-après :

('select * from venue order by venueid')
Note

Si votre requête contient des guillemets (par exemple pour insérer les valeurs littérales), placez le littéral entre deux ensembles de guillemets simples. Vous devez également joindre la requête entre guillemets simples :

('select * from venue where venuestate=''NV''')
TO ’s3://object-path/name-prefix

Chemin complet, incluant le nom du compartiment, vers l’emplacement dans Amazon S3 où Amazon Redshift écrit les objets de fichier de sortie, y compris le fichier manifeste si MANIFEST est spécifié. Les noms d’objet sont préfixés par name-prefix. Si vous utilisez PARTITION BY, une barre oblique (/) est automatiquement ajoutée à la fin de la valeur name-prefix si nécessaire. Pour plus de sécurité, UNLOAD se connecte à Amazon S3 via une connexion HTTPS. Par défaut, UNLOAD écrit un ou plusieurs fichiers par tranche. UNLOAD ajoute un numéro de tranche et un numéro de partie au préfixe du nom spécifié comme suit :

<object-path>/<name-prefix><slice-number>_part_<part-number>.

Si MANIFEST est spécifié, le fichier manifeste est écrit comme suit :

<object_path>/<name_prefix>manifest.

Si PARALLEL est défini sur OFF, les fichiers de données sont écrits comme suit :

<object_path>/<name_prefix><part-number>.

UNLOAD crée automatiquement les fichiers chiffrés à l’aide du chiffrement côté serveur Amazon S3, dont le fichier manifeste si MANIFEST est utilisé. La commande COPY lit automatiquement les fichiers chiffrés côté serveur pendant l’opération de chargement. Vous pouvez télécharger en toute transparence les fichiers chiffrés côté serveur à partir de votre compartiment à l’aide de la console de gestion ou de l’API Amazon S3. Pour plus d’informations, consultez Protection des données à l’aide du chiffrement côté serveur.

Pour utiliser le chiffrement côté client Amazon S3, spécifiez l’option ENCRYPTED.

Important

La commande REGION est obligatoire lorsque le compartiment Amazon S3 ne se trouve pas dans la même Région AWS que la base de données Amazon Redshift.

authorization

La commande UNLOAD a besoin de l’autorisation d’écrire des données dans Amazon S3. La commande UNLOAD utilise les mêmes paramètres que ceux utilisés par la commande COPY pour l’autorisation. Pour plus d’informations, consultez Paramètres d’autorisation dans la référence de syntaxe de la commande COPY.

IAM_ROLE { default | ’arn:aws:iam::<Compte AWS-id-1>:role/<role-name>

Utilisez le mot clé par défaut pour qu’Amazon Redshift utilise le rôle IAM défini comme rôle par défaut et associé au cluster lorsque la commande UNLOAD est exécutée.

Utilisez l’Amazon Resource Name (ARN) d’un rôle IAM que votre cluster utilise pour l’authentification et l’autorisation. Si vous spécifiez IAM_ROLE, vous ne pouvez pas utiliser ACCESS_KEY_ID et SECRET_ACCESS_KEY, SESSION_TOKEN ni CREDENTIALS. IAM_ROLE peut être chaîné. Pour en savoir plus, consultez Chaînage des rôles IAM dans le Guide de gestion Amazon Redshift.

[ FORMAT [AS] ] CSV | PARQUET | JSON

Mots-clés pour spécifier le format de déchargement qui remplace le format par défaut.

Lorsque CSV est utilisé, décharge vers un fichier texte au format CSV en utilisant une virgule (,) comme délimiteur par défaut. Si un champ contient des délimiteurs, des guillemets doubles, des sauts de ligne ou des retours chariot, le champ du fichier déchargé est placé entre des guillemets doubles. Un caractère de guillemets doubles dans un champ de données est échappé par un caractère de guillemets doubles supplémentaires. Quand aucune ligne n’est déchargée, Amazon Redshift peut écrire des objets Amazon S3 vides.

Lorsque PARQUET est utilisé, décharge dans un fichier au format Apache Parquet version 1.0. Par défaut, chaque groupe de lignes est compressé à l’aide de la compression SNAPPY. Pour plus d’informations sur le format Apache Parquet, voir Parquet.

En cas d’utilisation de JSON, le fichier est déchargé dans un fichier JSON dont chaque ligne contient un objet JSON, représentant un enregistrement complet dans le résultat de la requête. Amazon Redshift prend en charge l’écriture de JSON imbriqué lorsque le résultat de la requête contient des colonnes SUPER. Pour créer un objet JSON valide, le nom de chaque colonne de la requête doit être unique. Dans le fichier JSON, les valeurs booléennes sont déchargées en tant que t ou f, et les valeurs NULL sont déchargées en tant que null. Quand aucune ligne n’est déchargée, Amazon Redshift n’écrit pas d’objets Amazon S3.

Les mots-clés FORMAT et AS sont facultatifs. Vous ne pouvez pas utiliser le format CSV avec FIXEDWIDTH ou ADDQUOTES. Vous ne pouvez pas utiliser PARQUET avec DELIMITER, FIXEDWIDTH, ADDQUOTES, ESCAPE, NULL AS, HEADER, GZIP, BZIP2 ou ZSTD. PARQUET with ENCRYPTED n'est pris en charge qu'avec le chiffrement côté serveur à l'aide d'une AWS Key Management Service clé (SSE-KMS). Vous ne pouvez pas utiliser JSON avec DELIMITER, HEADER, FIXEDWIDTH, ADDQUOTES, ESCAPE ou NULL AS.

PARTITION BY (nom_colonne [, ... ]) [INCLUDE]

Spécifie les clés de partition pour l’opération de déchargement. UNLOAD partitionne automatiquement les fichiers de sortie dans des dossiers de partition en fonction des valeurs de clé de partition, conformément à la convention Apache Hive. Par exemple, un fichier Parquet pour l’année de partition 2019 et le mois de septembre a le préfixe suivant : s3://my_bucket_name/my_prefix/year=2019/month=September/000.parquet.

La valeur de nom_colonne doit être une colonne dans les résultats de requête déchargés.

Si vous spécifiez PARTITION BY avec l’option Inclure, les colonnes de partition ne sont pas supprimées des fichiers déchargés.

Amazon Redshift ne prend pas en charge les littéraux de chaîne dans les clauses PARTITION BY.

MANIFEST [ VERBOSE ]

Crée un fichier manifeste qui répertorie explicitement les détails des fichiers de données créés par le processus UNLOAD. Le manifeste est un fichier texte au format JSON qui répertorie l’URL de chaque fichier écrit sur Amazon S3.

Si MANIFEST est spécifié avec l’option VERBOSE, le manifeste inclut les informations suivantes :

  • Les noms des colonnes et les types de données, et pour les types de données CHAR, VARCHAR ou NUMERIC, les dimensions de chaque colonne. Pour les types de données CHAR et VARCHAR, la dimension est la longueur. Pour un type de données DECIMAL ou NUMERIC, les dimensions sont la précision et l’échelle.

  • Le nombre de lignes déchargées dans chaque fichier. Si l’option HEADER est spécifiée, le nombre de lignes inclut la ligne d’en-tête.

  • La taille de fichier totale de tous les fichiers déchargés et le nombre total de lignes déchargées dans tous les fichiers. Si l’option HEADER est spécifiée, le nombre de lignes inclut les lignes d’en-tête.

  • L’auteur. L’auteur est toujours « Amazon Redshift ».

Vous pouvez spécifier VERBOSE uniquement après MANIFEST.

Le fichier manifeste est écrit sur le même préfixe de chemin Amazon S3 que les fichiers de déchargement au format <object_path_prefix>manifest. Par exemple, si UNLOAD spécifie le préfixe de chemin Amazon S3 « s3://mybucket/venue_ », l’emplacement du fichier manifeste est « s3://mybucket/venue_manifest ».

HEADER

Ajoute une ligne d’en-tête contenant des noms de colonne au début de chaque fichier de sortie. Les options de transformation de texte, comme CSV, DELIMITER, ADDQUOTES et ESCAPE, s’appliquent également à la ligne d’en-tête. Vous ne pouvez pas utiliser HEADER avec FIXEDWIDTH.

DELIMITER AS ’caractère_délimiteur

Spécifie un caractère ASCII unique utilisé pour séparer les champs du fichier de sortie, tel qu’une barre verticale (|), une virgule (,) ou une tabulation (\t). Le délimiteur par défaut pour les fichiers texte est un caractère de barre verticale. Le délimiteur par défaut pour les fichiers CSV est un caractère de virgule. Le mot-clé AS est facultatif. Vous ne pouvez pas utiliser DELIMITER avec FIXEDWIDTH. Si les données contiennent le caractère délimiteur, vous devez spécifier l’option ESCAPE pour insérer une séquence d’échappement devant le délimiteur ou utiliser ADDQUOTES pour placer les données entre guillemets doubles. Vous pouvez également spécifier un délimiteur qui se ne trouve pas dans les données.

FIXEDWIDTH ’fixedwidth_spec

Décharge les données dans un fichier où la largeur de chaque colonne est une longueur fixe, plutôt que séparée par un délimiteur. fixedwidth_spec est une chaîne qui spécifie le nombre de colonnes et leur largeur. Le mot-clé AS est facultatif. Comme FIXEDWIDTH ne tronque pas les données, la spécification de chaque colonne dans l’instruction UNLOAD doit être au moins aussi longue que la longueur de l’entrée la plus longue de cette colonne. Le format de fixedwidth_spec est présenté ci-dessous :

'colID1:colWidth1,colID2:colWidth2, ...'

Vous ne pouvez pas utiliser FIXEDWIDTH avec DELIMITER ou HEADER.

ENCRYPTED [AUTO]

Spécifie que les fichiers de sortie sur Amazon S3 sont chiffrés à l’aide d’un chiffrement côté serveur ou d’un chiffrement côté client Amazon S3. Si MANIFEST est spécifié, le fichier manifeste est également chiffré. Pour plus d’informations, consultez Déchargement de fichiers de données chiffrés. Si vous ne spécifiez pas le paramètre ENCRYPTED, UNLOAD crée automatiquement des fichiers chiffrés à l'aide du chiffrement côté serveur Amazon S3 avec des clés de chiffrement AWS gérées (SSE-S3).

Pour ENCRYPTED, vous souhaiterez peut-être décharger sur Amazon S3 en utilisant le chiffrement côté serveur avec une AWS KMS clé (SSE-KMS). Le cas échéant, utilisez le paramètre KMS_KEY_ID pour fournir l’ID de clé. Vous ne pouvez pas utiliser le paramètre CREDENTIALS avec le paramètre KMS_KEY_ID. Si vous exécutez une commande UNLOAD pour les données à l’aide de KMS_KEY_ID, vous pouvez effectuer une opération COPY pour les mêmes données sans spécifier de clé.

Pour décharger sur Amazon S3 à l’aide d’un chiffrement côté client avec une clé symétrique fournie par le client, spécifiez la clé de l’une des deux manières suivantes. Pour fournir la clé, utilisez le paramètre MASTER_SYMMETRIC_KEY ou la partie master_symmetric_key d’une chaîne d’informations d’identification CREDENTIALS. Si vous déchargez des données à l’aide d’une clé symétrique racine, assurez-vous de fournir la même clé lorsque vous effectuez une opération COPY pour les données chiffrées.

UNLOAD ne prend pas en charge le chiffrement côté serveur Amazon S3 avec une clé fournie par le client (SSE-C).

Si ENCRYPTED AUTO est utilisée, la commande UNLOAD extrait la clé de AWS KMS chiffrement par défaut sur la propriété du compartiment Amazon S3 cible et chiffre les fichiers écrits sur Amazon S3 avec cette clé. AWS KMS Si le compartiment ne possède pas la clé de AWS KMS chiffrement par défaut, UNLOAD crée automatiquement des fichiers chiffrés à l'aide du chiffrement côté serveur Amazon Redshift AWS avec des clés de chiffrement gérées (SSE-S3). Vous ne pouvez pas utiliser cette option avec KMS_KEY_ID, MASTER_SYMMETRIC_KEY ou CREDENTIALS contenant master_symmetric_key.

KMS_KEY_ID ’id_clé

Spécifie l'ID de clé d'une clé AWS Key Management Service (AWS KMS) à utiliser pour chiffrer les fichiers de données sur Amazon S3. Pour plus d'informations, voir Qu'est-ce que c'est AWS Key Management Service ? Si vous spécifiez KMS_KEY_ID, vous devez également spécifier le paramètre ENCRYPTED. Si vous spécifiez KMS_KEY_ID, vous ne pouvez pas utiliser le paramètre CREDENTIALS. Utilisez IAM_ROLE ou ACCESS_KEY_ID and SECRET_ACCESS_KEY à la place.

MASTER_SYMMETRIC_KEY ’root_key

La clé symétrique racine à utiliser pour chiffrer les fichiers de données sur Amazon S3. Si vous spécifiez MASTER_SYMMETRIC_KEY, vous devez également spécifier le paramètre ENCRYPTED. Vous ne pouvez pas utiliser la clé MASTER_SYMMETRIC_KEY avec le paramètre CREDENTIALS. Pour plus d'informations, consultez Chargement de fichiers de données chiffrés à partir d’Amazon S3.

BZIP2

Décharge les données sur un ou plusieurs fichiers compressé bzip2 par tranche. Chaque fichier résultant est ajouté avec une extension .bz2.

GZIP

Décharge les données sur un ou plusieurs fichiers compressé gzip par tranche. Chaque fichier résultant est ajouté avec une extension .gz.

ZSTD

Décharge les données sur un ou plusieurs fichiers compressé Zstandard par tranche. Chaque fichier résultant est ajouté avec une extension .zst.

ADDQUOTES

Place entre guillemets chaque champ de données déchargées, de telle sorte qu’Amazon Redshift puisse décharger les valeurs de données qui contiennent le délimiteur lui-même. Par exemple, si le délimiteur est une virgule, vous pouvez décharger et recharger les données suivantes avec succès :

"1","Hello, World"

Sans les guillemets ajoutés, la chaîne Hello, World serait analysée comme deux champs distincts.

Certains formats de sortie ne prennent pas en charge ADDQUOTES.

Si vous utilisez ADDQUOTES, vous devez spécifier REMOVEQUOTES dans la commande COPY si vous rechargez les données.

NULL AS ’chaîne_null

Spécifie une chaîne qui représente une valeur null dans les fichiers de déchargement. Si cette option est utilisée, tous les fichiers de sortie contiennent la chaîne spécifiée à la place des valeurs null trouvées dans les données sélectionnées. Si cette option n’est pas spécifiée, les valeurs null sont déchargées en tant que :

  • Chaînes de longueur nulle pour la sortie délimitée

  • Chaînes d’espaces blancs pour la sortie de largeur fixe

Si une chaîne nulle a été spécifiée pour un déchargement de largeur fixe et que la largeur d’une colonne de sortie est inférieure à celle de la chaîne nulle, le comportement est le suivant :

  • Un champ vide est généré pour les colonnes autres que les colonnes de caractères

  • Une erreur est rapportée pour les colonnes de caractères

Contrairement à d’autres types de données où une chaîne définie par l’utilisateur représente une valeur nulle, Amazon Redshift exporte les colonnes de données SUPER en utilisant le format JSON et la représente comme une valeur nulle, comme déterminé par le format JSON. Par conséquent, les colonnes de données SUPER ignorent l'option NULL [AS] utilisée dans les commandes UNLOAD.

ESCAPE

Pour les colonnes CHAR et VARCHAR des fichiers de déchargement délimités, un caractère d’échappement (\) est placé devant toutes les occurrences des caractères suivants :

  • Saut de ligne : \n

  • Retour chariot: \r

  • Délimiteur spécifié pour les données déchargées.

  • Caractère d’échappement : \

  • Guillemet : " ou ' (si ESCAPE et ADDQUOTES sont tous deux spécifiés dans la commande UNLOAD).

Important

Si vous avez chargé vos données à l’aide d’une commande COPY et de l’option ESCAPE, vous devez également spécifier l’option ESCAPE avec votre commande UNLOAD pour générer le fichier de sortie réciproque. De même, si vous utilisez UNLOAD avec l’option ESCAPE, vous devez utiliser ESCAPE lorsque vous exécutez la commande COPY sur les mêmes données.

ALLOWOVERWRITE

Par défaut, UNLOAD échoue s’il trouve des fichiers qu’il pourrait remplacer. Si ALLOWOVERWRITE est spécifié, UNLOAD remplace les fichiers existants, y compris le fichier manifeste.

CLEANPATH

L’option CLEANPATH supprime les fichiers existants situés dans le chemin d’accès Amazon S3 spécifié dans la clause TO avant de décharger les fichiers à l’emplacement spécifié.

Si vous incluez la clause PARTITION BY, les fichiers existants sont supprimés uniquement des dossiers de partition pour recevoir les nouveaux fichiers générés par l’opération UNLOAD.

Vous devez bénéficier d’une autorisation s3:DeleteObject sur le compartiment Amazon S3. Pour obtenir des informations, consultez Politiques et autorisations dans Amazon S3 dans le Guide de l’utilisateur Amazon Simple Storage Service. Les fichiers que vous supprimez à l’aide de l’option CLEANPATH sont définitivement supprimés et ne peuvent pas être récupérés.

Vous ne pouvez pas spécifier l’option CLEANPATH si vous spécifiez l’option ALLOWOVERWRITE.

PARALLEL

Par défaut, UNLOAD écrit les données en parallèle dans plusieurs fichiers, selon le nombre de tranches du cluster. L’option par défaut est ON ou TRUE. Si PARALLEL a la valeur OFF ou FALSE, UNLOAD écrit en série dans un ou plusieurs fichiers de données, triés de manière absolue selon la clause ORDER BY, si elle est utilisée. La taille maximale d’un fichier de données est de 6,2 Go. Ainsi, par exemple, si vous déchargez 13,4 Go de données, UNLOAD crée les trois fichiers suivants.

s3://mybucket/key000 6.2 GB s3://mybucket/key001 6.2 GB s3://mybucket/key002 1.0 GB
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.

MAXFILESIZE [AS] max-size [ Mo | Go ]

Spécifie la taille maximale des fichiers créés par UNLOAD dans Amazon S3. Spécifiez une valeur décimale comprise entre 5 Mo et 6,2 Go. Le mot-clé AS est facultatif. L’unité par défaut est les Mo. Si MAXFILESIZE n’est pas spécifié, la taille maximale de fichier par défaut est de 6,2 Go. La taille du fichier manifeste, s’il est utilisé, n’est pas affectée par MAXFILESIZE.

ROWGROUPSIZE [AS] size [ MB | GB ]

Spécifie la taille des groupes de lignes. Le choix d’une taille supérieure peut réduire le nombre de groupes de lignes, réduisant ainsi la quantité de communication réseau. Spécifiez une valeur d’entier comprise entre 32 Mo et 128 Mo. Le mot-clé AS est facultatif. L’unité par défaut est les Mo.

Si ROWGROUPSIZE n’est pas spécifié, la taille par défaut est de 32 Mo. Pour utiliser ce paramètre, le format de stockage doit être Parquet et le type de nœud doit être ra3.4xlarge, ra3.16xlarge, ds2.8xlarge ou dc2.8xlarge.

REGION [AS] ’aws-region

Spécifie l' Région AWS emplacement du compartiment Amazon S3 cible. La REGION est requise pour effectuer le DÉCHARGEMENT dans un compartiment Amazon S3 qui ne se trouve pas dans la Région AWS même base de données Amazon Redshift.

La valeur de aws_region doit correspondre à une AWS région répertoriée dans le tableau des régions et points de terminaison Amazon Redshift du. Références générales AWS

Par défaut, UNLOAD suppose que le compartiment Amazon S3 cible se trouve au même endroit Région AWS que la base de données Amazon Redshift.

EXTENSION ’extension-name

Spécifie l’extension de fichier à ajouter aux noms des fichiers déchargés. Amazon Redshift n’effectuant aucune validation, vous devez vérifier que l’extension de fichier spécifiée est correcte. Si vous utilisez une méthode de compression telle que GZIP, vous devez toujours spécifier .gz dans le paramètre d’extension. Si vous n’indiquez pas d’extension, Amazon Redshift n’ajoute rien au nom de fichier. Si vous spécifiez une méthode de compression sans indiquer d’extension, Amazon Redshift ajoute uniquement l’extension de la méthode de compression au nom de fichier.

Notes d’utilisation

Utilisation d’ESCAPE pour toutes les opérations UNLOAD de texte délimité

Lorsque vous exécutez UNLOAD à l’aide d’un délimiteur, vos données peuvent inclure ce délimiteur ou l’un des caractères répertoriés dans la description de l’option ESCAPE. Dans ce cas, vous devez utiliser l’option ESCAPE avec l’instruction UNLOAD. Si vous n’utilisez pas l’option ESCAPE avec UNLOAD, les opérations COPY suivantes qui utilisent les données déchargées peuvent échouer.

Important

Nous vous recommandons vivement de toujours utiliser ESCAPE avec les deux instructions UNLOAD et COPY. Une exception s’applique si vous êtes certain que vos données ne contiennent pas de délimiteur ni d’autres caractères susceptibles d’avoir à faire l’objet d’un échappement.

Perte de précision pour la virgule flottante

Vous pouvez rencontrer une perte de précision pour les données en virgule flottante déchargées et rechargées avec succès.

Clause LIMIT

La requête SELECT ne peut pas utiliser une clause LIMIT dans l’instruction SELECT externe. Par exemple, l’instruction UNLOAD suivante échoue.

unload ('select * from venue limit 10') to 's3://mybucket/venue_pipe_' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';

À la place, utilisez une clause LIMIT imbriquée, comme dans l’exemple suivant.

unload ('select * from venue where venueid in (select venueid from venue order by venueid desc limit 10)') to 's3://mybucket/venue_pipe_' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';

Vous pouvez aussi remplir une table à l’aide de SELECT…INTO ou de CREATE TABLE AS avec une clause LIMIT, puis procéder au déchargement à partir de cette table.

Déchargement d’une colonne avec le type de données GEOMETRY

Vous pouvez décharger les colonnes GEOMETRY au format texte ou CSV. Vous pouvez décharger les données GEOMETRY avec l’option FIXEDWIDTH. Les données sont déchargées au format hexadécimal du format EWKB. Si la taille des données EWKB est supérieure à 4 Mo, un avertissement est envoyé car les données ne pourront pas être chargées dans un table par la suite.

Déchargement du type de données HLLSKETCH

Vous pouvez décharger les colonnes HLLSKETCH au format texte ou CSV. Vous pouvez décharger les données HLLSKETCH avec l’option FIXEDWIDTH. Les données sont déchargées au format Base64 pour les HyperLogLog esquisses denses ou au format JSON pour les esquisses HyperLogLog éparses. Pour plus d’informations, consultez HyperLogLog fonctions.

L’exemple suivant exporte une table contenant des colonnes HLLSKETCH dans un fichier.

CREATE TABLE a_table(an_int INT, b_int INT); INSERT INTO a_table VALUES (1,1), (2,1), (3,1), (4,1), (1,2), (2,2), (3,2), (4,2), (5,2), (6,2); CREATE TABLE hll_table (sketch HLLSKETCH); INSERT INTO hll_table select hll_create_sketch(an_int) from a_table group by b_int; UNLOAD ('select * from hll_table') TO 's3://mybucket/unload/' IAM_ROLE 'arn:aws:iam::0123456789012:role/MyRedshiftRole' NULL AS 'null' ALLOWOVERWRITE CSV;

Déchargement d’une colonne avec le type de données VARBYTE

Vous pouvez décharger les colonnes VARBYTE au format texte ou CSV. Les données sont déchargées sous forme hexadécimale. Vous ne pouvez pas décharger les données VARBYTE avec l’option FIXEDWIDTH. L’option ADDQUOTES de UNLOAD au format CSV n’est pas prise en charge. Une colonne VARBYTE ne peut pas être une colonne PARTITIONED BY.

Clause FORMAT AS PARQUET

Tenez comptes des points suivants lorsque vous utilisez FORMAT AS PARQUET :

  • Une opération de déchargement vers Parquet n’utilise pas la compression au niveau du fichier. Chaque groupe de lignes est compressé avec SNAPPY.

  • Si MAXFILESIZE n’est pas spécifié, la taille maximale de fichier par défaut est de 6,2 Go. Vous pouvez utiliser MAXFILESIZE pour spécifier une taille de fichier de 5 Mo à 6,2 Go. La taille réelle du fichier est approximative lorsque le fichier est écrit. Elle peut donc ne pas être exactement égale au nombre que vous spécifiez.

    Pour optimiser les performances d’analyse, Amazon Redshift essaie de créer des fichiers Parquet contenant des groupes de lignes de 32 Mo de taille égale. La valeur MAXFILESIZE que vous spécifiez est automatiquement arrondie au multiple le plus proche de 32 Mo. Par exemple, si vous spécifiez MAXFILESIZE 200 MB, chaque fichier Parquet déchargé est d’environ 192 Mo (groupe de lignes de 32 Mo x 6 = 192 Mo).

  • Si une colonne utilise le format de données TIMESTAMPTZ, seules les valeurs d’horodatage sont déchargées. Les informations de fuseau horaire ne sont pas déchargées.

  • Ne spécifiez pas de préfixes de nom de fichier commençant par des caractères de soulignement (_) ou des points (.). Redshift Spectrum traite les fichiers qui commencent par ces caractères comme des fichiers cachés et les ignore.

Clause PARTITION BY

Tenez comptes des points suivants lorsque vous utilisez PARTITION BY :

  • Les colonnes de partition ne sont pas incluses dans le fichier de sortie.

  • Assurez-vous d’inclure des colonnes de partition dans la requête SELECT utilisée dans l’instruction UNLOAD. Vous pouvez spécifier n’importe quel nombre de colonnes de partition dans la commande UNLOAD. Cependant, une limitation exige qu’au moins une colonne autre qu’une colonne de partition fasse partie du fichier.

  • Si la valeur de clé de partition est null, Amazon Redshift décharge automatiquement ces données dans une partition par défaut appelée partition_column=__HIVE_DEFAULT_PARTITION__.

  • La commande UNLOAD n’effectue pas d’appels vers un catalogue externe. Pour enregistrer vos nouvelles partitions dans le cadre de votre table externe existante, utilisez une commande distincte ALTER TABLE ... ADD PARTITION ... Vous pouvez également exécuter une commande CREATE EXTERNAL TABLE pour enregistrer les données déchargées en tant que nouvelle table externe. Vous pouvez également utiliser un AWS Glue robot d'exploration pour remplir votre catalogue de données. Pour plus d’informations, consultez Définition des analyseurs dans le Guide du développeur AWS Glue .

  • Si vous utilisez l’option MANIFEST, Amazon Redshift génère un seul fichier manifeste dans le dossier Amazon S3 racine.

  • Les types de données de colonne que vous pouvez utiliser comme clé de partition sont SMALLINT, INTEGER, BIGINT, DECIMAL, REAL, BOOLEAN, CHAR, VARCHAR, DATE et TIMESTAMP.

Utilisation du privilège ASSUMEROLE pour accorder l’accès à un rôle IAM pour les opérations UNLOAD

Pour permettre à des utilisateurs et groupes spécifiques d’accéder à un rôle IAM pour les opérations UNLOAD, un super-utilisateur peut accorder le privilège ASSUMEROLE sur un rôle IAM aux utilisateurs et aux groupes. Pour obtenir des informations, consultez GRANT.

UNLOAD ne prend pas en charge les alias de point d’accès Amazon S3

Vous ne pouvez pas utiliser d’alias de point d’accès Amazon S3 avec la commande UNLOAD.

Exemples

Pour voir des exemples d’utilisation de la commande UNLOAD. consultez Exemples UNLOAD