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 vers un ou plusieurs fichiers texte ou Apache Parquet sur Amazon S3, à l'aide du chiffrement côté serveur Amazon S3 (SSE-S3). JSON Vous pouvez également spécifier le chiffrement côté serveur à l'aide d'un AWS Key Management Service clé (SSE-KMS) ou 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 MAXFILESIZE paramètre. 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 des services tels qu'Amazon AthenaEMR, Amazon et Amazon. SageMaker

Pour plus d'informations et des exemples de scénarios relatifs à l'utilisation de la UNLOAD commande, consultezDéchargement de données dans Amazon Redshift.

Privilèges et autorisations nécessaires

Pour que la UNLOAD commande réussisse, il faut au moins SELECT un privilège sur les données de la base de données, ainsi que l'autorisation d'écrire sur l'emplacement Amazon S3. Les autorisations nécessaires sont similaires à celles de la COPY commande. Pour plus d'informations sur les autorisations de COPY commande, consultezAutorisations 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’)

Une SELECT requête. Les résultats de la requête sont déchargés. Dans la plupart des cas, il est intéressant 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

Le chemin complet, y compris le nom du compartiment, vers l'emplacement sur Amazon S3 où Amazon Redshift écrit les objets du fichier de sortie, y compris le fichier manifeste s'il 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é, connectez-vous UNLOAD à Amazon S3 à l'aide d'une HTTPS connexion. Par défaut, UNLOAD écrit un ou plusieurs fichiers par tranche. UNLOADajoute un numéro de tranche et un numéro de pièce au préfixe de nom spécifié comme suit :

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

S'MANIFESTil est spécifié, le fichier manifeste est écrit comme suit :

<object_path>/<name_prefix>manifest.

Si cela PARALLEL est spécifiéOFF, les fichiers de données sont écrits comme suit :

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

UNLOADcrée automatiquement des fichiers chiffrés à l'aide du chiffrement côté serveur (SSE) d'Amazon S3, y compris le fichier manifeste s'il MANIFEST est utilisé. La COPY commande lit automatiquement les fichiers chiffrés côté serveur lors de l'opération de chargement. Vous pouvez télécharger de manière transparente des fichiers chiffrés côté serveur depuis votre compartiment à l'aide de la console Amazon S3 ou. API 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'ENCRYPTEDoption.

Important

REGIONest obligatoire lorsque le compartiment Amazon S3 n'est pas dans le même Région AWS en tant que base de données Amazon Redshift.

authorization

La UNLOAD commande a besoin d'une autorisation pour écrire des données sur Amazon S3. La UNLOAD commande utilise les mêmes paramètres que ceux COPY utilisés pour l'autorisation. Pour plus d'informations, reportez-vous Paramètres d’autorisation à la référence de syntaxe des COPY commandes.

IAM_ ROLE {par défaut | 'arn:aws:iam : :<Compte AWS-id-1>:rôle/<role-name>'

Utilisez le mot clé par défaut pour qu'Amazon Redshift utilise le IAM rôle défini par défaut et associé au cluster lors de l'exécution de la UNLOAD commande.

Utilisez le nom de ressource Amazon (ARN) pour un IAM rôle utilisé par votre cluster pour l'authentification et l'autorisation. Si vous spécifiez IAM _ROLE, vous ne pouvez pas utiliser ACCESS _ KEY _ID et SECRET _ ACCESS _ KEYTOKEN, SESSION _ ouCREDENTIALS. Le IAM _ ROLE peut être enchaîné. Pour plus d'informations, consultez la section Chaining IAM des rôles dans le guide de gestion Amazon Redshift.

[FORMAT[EN TANT QUE]] CSV | PARQUET | JSON

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

LorsqueCSV, est déchargé dans un fichier texte au CSV format utilisant une virgule (,) comme séparateur 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.

LorsquePARQUET, il est déchargé dans un fichier au format Apache Parquet version 1.0. Par défaut, chaque groupe de lignes est compressé par SNAPPY compression. Pour plus d’informations sur le format Apache Parquet, voir Parquet.

LorsqueJSON, est déchargé dans un JSON fichier, chaque ligne contenant un JSON objet, ce qui représente un enregistrement complet dans le résultat de la requête. Amazon Redshift prend en charge l'écriture imbriquée JSON lorsque le résultat de la requête contient des colonnes. SUPER Pour créer un JSON objet valide, le nom de chaque colonne de la requête doit être unique. Dans le JSON fichier, les valeurs booléennes sont déchargées en tant que t ouf, et les NULL valeurs 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 l'utiliser CSV avec FIXEDWIDTH ouADDQUOTES. Vous ne pouvez pas utiliser PARQUET avec DELIMITERFIXEDWIDTH,ADDQUOTES,ESCAPE,, NULL ASHEADER,GZIP,BZIP2, ouZSTD. PARQUETwith n'ENCRYPTEDest pris en charge qu'avec le chiffrement côté serveur avec un AWS Key Management Service clé (SSE-KMS). Vous ne pouvez pas utiliser JSON avec DELIMITERHEADER,FIXEDWIDTH,ADDQUOTES,ESCAPE, ou NULL AS.

PARTITIONPAR (nom_colonne [,...]) [] INCLUDE

Spécifie les clés de partition pour l’opération de déchargement. UNLOADpartitionne automatiquement les fichiers de sortie dans des dossiers de partition en fonction des valeurs des clés 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://amzn-s3-demo-bucket/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'INCLUDEoption, 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 PARTITION les clauses BY.

MANIFEST [ VERBOSE ]

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

Si VERBOSE cette option MANIFEST est spécifiée, le manifeste inclut les informations suivantes :

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

  • Le nombre de lignes déchargées dans chaque fichier. Si l'HEADERoption 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'HEADERoption est spécifiée, le nombre de lignes inclut les lignes d'en-tête.

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

Vous ne pouvez spécifier VERBOSE que les éléments suivantsMANIFEST.

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 le UNLOAD préfixe de chemin Amazon S3 « s3://amzn-s3-demo-bucket/venue_ » est spécifié, l'emplacement du fichier manifeste est « s3://amzn-s3-demo-bucket/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 du texteCSV, telles queDELIMITER,ADDQUOTES, etESCAPE, s'appliquent également à la ligne d'en-tête. Vous ne pouvez pas l'utiliser HEADER avecFIXEDWIDTH.

DELIMITEREN TANT QUE 'delimiter_character'

Spécifie un ASCII caractère unique utilisé pour séparer les champs du fichier de sortie, tel qu'un tube (|), une virgule (,) ou un onglet (\ t). Le délimiteur par défaut pour les fichiers texte est un caractère de barre verticale. Le séparateur par défaut pour les CSV fichiers est une virgule. Le mot-clé AS est facultatif. Vous ne pouvez pas l'utiliser DELIMITER avecFIXEDWIDTH. Si les données contiennent le caractère séparateur, vous devez spécifier l'ESCAPEoption permettant d'échapper au délimiteur ou de l'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 elle FIXEDWIDTH ne tronque pas les données, la spécification de chaque colonne de l'UNLOADinstruction 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 l'utiliser FIXEDWIDTH avec DELIMITER ouHEADER.

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. S'il MANIFEST est spécifié, le fichier manifeste est également crypté. Pour de plus amples informations, veuillez consulter Déchargement de fichiers de données chiffrés. Si vous ne spécifiez pas le ENCRYPTED paramètre, crée UNLOAD automatiquement des fichiers chiffrés à l'aide du chiffrement côté serveur Amazon S3 avec AWS-clés de chiffrement gérées (SSE-S3).

En effetENCRYPTED, vous souhaiterez peut-être effectuer un déchargement sur Amazon S3 à l'aide d'un chiffrement côté serveur avec un 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 CREDENTIALS paramètre avec le paramètre KMS _ KEY _ID. Si vous exécutez une UNLOAD commande pour des données à l'aide de KMS _ KEY _ID, vous pouvez ensuite effectuer une COPY opération 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 COPY opération sur les données chiffrées.

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

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

KMS_ KEY _ID « identificateur de clé »

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

MASTER_ SYMMETRIC _ KEY « clé_racine »

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 ENCRYPTED paramètre. Vous ne pouvez pas utiliser MASTER _ SYMMETRIC _ KEY avec le CREDENTIALS paramètre. Pour de plus amples informations, veuillez consulter 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 sont pas pris en chargeADDQUOTES.

Si vous utilisezADDQUOTES, vous devez spécifier REMOVEQUOTES dans le COPY si vous rechargez les données.

NULLAS « chaîne nulle »

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 aux autres types de données où une chaîne définie par l'utilisateur représente une valeur nulle, Amazon Redshift exporte SUPER les colonnes de données en utilisant JSON le format et les représente comme nulle, conformément au format. JSON Par conséquent, SUPER les colonnes de données ignorent l'option NULL [AS] utilisée dans UNLOAD les commandes.

ESCAPE

Pour CHAR et les VARCHAR colonnes des fichiers de déchargement délimités, un caractère d'échappement (\) est placé avant chaque occurrence 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 : \

  • Un guillemet : " ou ' (si ESCAPE les deux ADDQUOTES sont spécifiés dans la UNLOAD commande).

Important

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

ALLOWOVERWRITE

Par défaut, UNLOAD échoue s'il trouve des fichiers qu'il est susceptible de remplacer. S'il ALLOWOVERWRITE est spécifié, il UNLOAD remplace les fichiers existants, y compris le fichier manifeste.

CLEANPATH

L'CLEANPATHoption supprime les fichiers existants situés dans le chemin Amazon S3 spécifié dans la clause TO avant de les décharger vers 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'UNLOADopération.

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 CLEANPATH cette option sont définitivement supprimés et ne peuvent pas être récupérés. Si la gestion des versions est activée dans le compartiment Amazon S3 cible, UNLOAD CLEANPATH cette option permet de ne pas supprimer les versions précédentes des fichiers.

Vous ne pouvez pas spécifier l'CLEANPATHoption si vous la ALLOWOVERWRITE spécifiez.

PARALLEL

Par défaut, UNLOAD écrit les données en parallèle dans plusieurs fichiers, en fonction du nombre de tranches du cluster. L'option par défaut est ON ouTRUE. If PARALLEL is OFF orFALSE, UNLOAD écrit dans un ou plusieurs fichiers de données en série, triés absolument conformément à 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éez les trois fichiers suivants.

s3://amzn-s3-demo-bucket/key000 6.2 GB s3://amzn-s3-demo-bucket/key001 6.2 GB s3://amzn-s3-demo-bucket/key002 1.0 GB
Note

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

MAXFILESIZE[AS] taille maximale [MB | GB]

Spécifie la taille maximale des fichiers UNLOAD créés 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 ce n'est pas le cas, la taille de fichier maximale par défaut est de 6,2 Go. La taille du fichier manifeste, s'il est utilisé, n'est pas affectée parMAXFILESIZE.

ROWGROUPSIZETaille [AS] [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 ce n'est pas le cas, 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 ou dc2.8xlarge.

REGION[AS] « aws-region »

Spécifie le Région AWS où se trouve le compartiment Amazon S3 cible. REGIONest requis UNLOAD pour un compartiment Amazon S3 qui ne se trouve pas dans le même compartiment Région AWS en tant que base de données Amazon Redshift.

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

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

EXTENSION« nom de l'extension »

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 queGZIP, vous devez toujours la 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 ESCAPE pour toutes les opérations de texte UNLOAD délimité

Lorsque vous UNLOAD utilisez 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'ESCAPEoption. Dans ce cas, vous devez utiliser l'ESCAPEoption avec l'UNLOADinstruction. Si vous n'utilisez pas l'ESCAPEoption avec leUNLOAD, les COPY opérations suivantes utilisant les données déchargées risquent d'échouer.

Important

Nous vous recommandons vivement de toujours utiliser à la fois ESCAPE les deux COPY instructions UNLOAD et. 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 SELECT requête ne peut pas utiliser de LIMIT clause externeSELECT. Par exemple, l'UNLOADinstruction suivante échoue.

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

Utilisez plutôt une LIMIT clause 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://amzn-s3-demo-bucket/venue_pipe_' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';

Vous pouvez également remplir une table à l'aide deSELECT... INTO ou CREATE TABLE AS à l'aide d'une LIMIT clause, puis décharger à partir de cette table.

Déchargement d'une colonne du type de GEOMETRY données

Vous ne pouvez décharger les GEOMETRY colonnes que sous forme de texte ou de CSV format. Vous ne pouvez pas décharger GEOMETRY des données avec FIXEDWIDTH cette option. Les données sont déchargées sous la forme hexadécimale du format binaire (EWKB) bien connu et étendu. Si la taille des EWKB données est supérieure à 4 Mo, un avertissement s'affiche car les données ne peuvent pas être chargées ultérieurement dans une table.

Déchargement du type de HLLSKETCH données

Vous ne pouvez décharger les HLLSKETCH colonnes que sous forme de texte ou de CSV format. Vous ne pouvez pas décharger HLLSKETCH des données avec FIXEDWIDTH cette option. Les données sont déchargées au format Base64 pour les HyperLogLog esquisses denses ou au JSON format pour les esquisses HyperLogLog éparses. Pour de plus amples informations, veuillez consulter HyperLogLog fonctions.

L'exemple suivant exporte un tableau contenant des HLLSKETCH colonnes 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://amzn-s3-demo-bucket/unload/' IAM_ROLE 'arn:aws:iam::0123456789012:role/MyRedshiftRole' NULL AS 'null' ALLOWOVERWRITE CSV;

Déchargement d'une colonne du type de VARBYTE données

Vous ne pouvez décharger les VARBYTE colonnes que sous forme de texte ou de CSV format. Les données sont déchargées sous forme hexadécimale. Vous ne pouvez pas décharger VARBYTE des données avec FIXEDWIDTH cette option. L'ADDQUOTESoption « UNLOAD to a » n'CSVest pas prise en charge. Une VARBYTE colonne ne peut pas être une colonne PARTITIONED BY.

FORMATPARQUETClause AS

Tenez compte de ces considérations 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é avecSNAPPY.

  • Si MAXFILESIZE ce n'est pas le cas, la taille de fichier maximale par défaut est de 6,2 Go. Vous pouvez l'utiliser MAXFILESIZE pour spécifier une taille de fichier comprise entre 5 Mo et 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 MAXFILESIZE valeur que vous spécifiez est automatiquement arrondie au multiple inférieur de 32 Mo le plus proche. Par exemple, si vous spécifiez MAXFILESIZE 200 Mo, chaque fichier Parquet déchargé représente environ 192 Mo (groupe de lignes de 32 Mo x 6 = 192 Mo).

  • Si une colonne utilise un format de TIMESTAMPTZ données, 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.

PARTITIONClause BY

Tenez compte de ces considérations 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 SELECT requête utilisée dans l'UNLOADinstruction. Vous pouvez spécifier n'importe quel nombre de colonnes de partition dans la UNLOAD commande. 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 UNLOAD commande ne fait aucun appel à un catalogue externe. Pour enregistrer vos nouvelles partitions afin qu'elles fassent partie de votre table externe existante, utilisez un ALTERTABLE... ADDPARTITION... commande. Vous pouvez également exécuter une CREATE EXTERNAL TABLE commande pour enregistrer les données déchargées en tant que nouvelle table externe. Vous pouvez également utiliser un AWS Glue crawler pour remplir votre catalogue de données. Pour plus d'informations, consultez la section Définition des robots d'exploration dans AWS Glue Guide du développeur.

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

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

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

Pour permettre à des utilisateurs et à des groupes spécifiques d'accéder à un IAM rôle pour les UNLOAD opérations, un superutilisateur peut accorder le ASSUMEROLE privilège relatif à un IAM rôle à des utilisateurs et à des groupes. Pour plus d’informations, veuillez consulter GRANT.

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

Exemples

Pour des exemples illustrant l'utilisation de la UNLOAD commande, consultezUNLOADexemples.