Paramètres du format de données - 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.

Paramètres du format de données

Par défaut, la COPY commande s'attend à ce que les données source soient du texte -8 délimité par des caractèresUTF. Le délimiteur par défaut est une barre verticale ( | ). Si les données source sont dans un autre format, utilisez les paramètres suivants pour spécifier le format des données:

Outre les formats de données standard, COPY prend en charge les formats de données en colonnes suivants pour COPY Amazon S3 :

COPYà partir du format colonnaire est pris en charge avec certaines restrictions. Pour de plus amples informations, veuillez consulter COPYà partir de formats de données en colonnes.

Paramètres du format de données
FORMAT[EN TANT QUE]

(Facultatif) Identifie les mots-clés de format des données. Les FORMAT arguments sont décrits ci-dessous.

CSV[QUOTE[AS] 'quote_character']

Permet d'utiliser le CSV format dans les données d'entrée. Pour échapper automatiquement aux délimiteurs, aux caractères de nouvelle ligne et aux retours de chariot, placez le champ dans le caractère spécifié par le paramètre. QUOTE Le guillemet par défaut correspond aux guillemets doubles ( " ). Lorsque le guillemet simple est utilisé dans un champ, précédez le caractère d’un guillemet simple supplémentaire. Par exemple, si les guillemets sont doubles, pour insérer la chaîne A "quoted" word le fichier d’entrée doit inclure la chaîne "A ""quoted"" word". Lorsque le CSV paramètre est utilisé, le délimiteur par défaut est une virgule (,). Vous pouvez spécifier un autre délimiteur à l'aide du DELIMITER paramètre.

Lorsqu’un champ est placé entre guillemets, l’espace blanc entre les délimiteurs et les guillemets est ignoré. Si le délimiteur est un caractère d’espace vide, comme un onglet, le délimiteur n’est pas considéré comme un espace vide.

CSVne peut pas être utilisé avec FIXEDWIDTHREMOVEQUOTES, ouESCAPE.

QUOTE[AS] 'quote_character'

Facultatif. Spécifie le caractère à utiliser comme guillemet lors de l'utilisation du CSV paramètre. La valeur par défaut est les guillemets doubles ( " ). Si vous utilisez le QUOTE paramètre pour définir un guillemet autre qu'un guillemet double, il n'est pas nécessaire d'éviter les guillemets doubles dans le champ. Le QUOTE paramètre ne peut être utilisé qu'avec le CSV paramètre. Le mot-clé AS est facultatif.

DELIMITER[AS] ['delimiter_char']

Spécifie le ASCII caractère unique utilisé pour séparer les champs du fichier d'entrée, tel qu'un tube (|), une virgule (,) ou un onglet (\ t). Les ASCII caractères non imprimables sont pris en charge. ASCIIles caractères peuvent également être représentés en octal, en utilisant le format « \ ddd », où « d » est un chiffre octal (0—7). Le séparateur par défaut est un caractère tube (|), sauf si le CSV paramètre est utilisé, auquel cas le séparateur par défaut est une virgule (,). Le mot-clé AS est facultatif. DELIMITERne peut pas être utilisé avecFIXEDWIDTH.

FIXEDWIDTH« fixedwidth_spec »

Charge les données d’un fichier où la largeur de chaque colonne est une longueur fixe, plutôt que des colonnes séparées par un délimiteur. fixedwidth_spec est une chaîne qui spécifie une étiquette de colonne définie par l’utilisateur et la largeur de la colonne. L’étiquette de colonne peut être une chaîne de texte ou un nombre entier, en fonction de ce que l’utilisateur choisit. L’étiquette de colonne n’a aucun lien avec le nom de la colonne. L’ordre des paires étiquette/largeur doit correspondre exactement à l’ordre des colonnes de la table. FIXEDWIDTHne peut pas être utilisé avec CSV ouDELIMITER. Dans Amazon Redshift, la longueur des VARCHAR colonnes CHAR et est exprimée en octets. Assurez-vous donc que la largeur de colonne que vous spécifiez correspond à la longueur binaire des caractères multioctets lors de la préparation du fichier à charger. Pour de plus amples informations, veuillez consulter Types caractères.

Le format de fixedwidth_spec apparaît comme suit :

'colLabel1:colWidth1,colLabel:colWidth2, ...'
SHAPEFILE[SIMPLIFY[AUTO] ['tolérance']]

Permet d'utiliser le SHAPEFILE format dans les données d'entrée. Par défaut, la première colonne du shapefile est une colonne GEOMETRY ou IDENTITY. Toutes les colonnes suivantes suivent l’ordre spécifié dans le shapefile.

Vous ne pouvez pas utiliser SHAPEFILE avec FIXEDWIDTHREMOVEQUOTES, ouESCAPE.

Pour utiliser des objets GEOGRAPHY avec COPY FROM SHAPEFILE, intégrez-les d’abord dans une colonne GEOMETRY, puis convertissez-les en objets GEOGRAPHY.

SIMPLIFY[tolérance]

(Facultatif) Simplifie toutes les géométries pendant le processus d’ingestion à l’aide de l’algorithme Ramer-Douglas-Peucker et de la tolérance donnée.

SIMPLIFYAUTO[tolérance]

(Facultatif) Simplifie uniquement les géométries supérieures à la taille de géométrie maximale. Cette simplification utilise l’algorithme Ramer-Douglas-Peucker et la tolérance calculée automatiquement si celle-ci ne dépasse pas la tolérance spécifiée. Cet algorithme calcule la taille pour stocker les objets dans la tolérance spécifiée. La valeur tolerance est facultative.

Pour voir des exemples de chargement de shapefiles, consultez Chargement d’un shapefile dans Amazon Redshift.

AVRO[AS] 'avro_option'

Spécifie que les données source sont au format Avro.

Le format Avro est pris en charge COPY à partir des services et protocoles suivants :

  • Amazon S3

  • Amazon EMR

  • Hôtes distants (SSH)

Avro n'est pas pris en charge COPY depuis DynamoDB.

Avro est un protocole de sérialisation de données. Un fichier source Avro inclut un schéma qui définit la structure des données. Le type de schéma Avro doit être record. COPYaccepte les fichiers Avro créés à l'aide du codec non compressé par défaut ainsi que des codecs de compression deflate etsnappy. Pour plus d’informations sur Avro, accédez à Apache Avro.

Les valeurs valides pour avro_option sont les suivantes :

  • 'auto'

  • 'auto ignorecase'

  • 's3://jsonpaths_file'

La valeur par défaut est 'auto'.

COPYmappe automatiquement les éléments de données des données sources Avro aux colonnes de la table cible. en mettant en correspondance les noms de champs du schéma Avro avec les noms de colonnes dans la table cible. La mise en correspondance est sensible à la casse pour 'auto' et n’est pas sensible à la casse pour 'auto ignorecase'.

Les noms de colonnes des tables Amazon Redshift sont toujours en lettres minuscules, aussi lorsque vous utilisez l’option 'auto', les noms de champs correspondants doivent être en minuscules. Si les noms de champs ne sont pas tous en minuscules, vous pouvez utiliser l’option 'auto ignorecase'. Avec l''auto'argument par défaut, COPY reconnaît uniquement le premier niveau de champs, ou champs extérieurs, de la structure.

Pour mapper explicitement les noms de colonnes aux noms de champs Avro, vous pouvez utiliser JSONPathsfichier.

Par défaut, COPY tente de faire correspondre toutes les colonnes de la table cible aux noms de champs Avro. Pour charger un sous-ensemble de colonnes, vous pouvez éventuellement spécifier une liste de colonnes. Si une colonne de la table cible est omise de la liste des colonnes, COPY charge l'DEFAULTexpression de la colonne cible. Si la colonne cible n'a pas de valeur par défaut, COPY tente de chargerNULL. Si une colonne est incluse dans la liste des colonnes et COPY ne trouve aucun champ correspondant dans les données Avro, COPY tente de la NULL charger dans la colonne.

En cas de COPY tentative d'attribution NULL à une colonne définie comme NOTNULL, la COPY commande échoue.

Schéma Avro

Un fichier de données source Avro inclut un schéma qui définit la structure des données. COPYlit le schéma qui fait partie du fichier de données source Avro pour mapper les éléments de données aux colonnes de la table cible. L’exemple suivant illustre un schéma Avro.

{ "name": "person", "type": "record", "fields": [ {"name": "id", "type": "int"}, {"name": "guid", "type": "string"}, {"name": "name", "type": "string"}, {"name": "address", "type": "string"}] }

Le schéma Avro est défini à l'aide d'un JSON format. L'JSONobjet de niveau supérieur contient trois paires nom-valeur avec les noms, ou clés,"name", "type" et. "fields"

La clé "fields" s’apparie à un tableau d’objets qui définissent le nom et le type de données de chaque champ dans la structure de données. Par défaut, fait COPY automatiquement correspondre les noms des champs aux noms des colonnes. Les noms de colonnes sont toujours en minuscules, les noms de champs correspondants doivent donc toujours être en minuscules, sauf si vous spécifiez l’option ‘auto ignorecase’. Tous les noms de domaines qui ne correspondent pas à un nom de colonne sont ignorés. L’ordre n’a pas d’importance. Dans l'exemple précédent, COPY correspond aux noms des colonnes idguid,name, etaddress.

Avec l''auto'argument par défaut, fait COPY correspondre uniquement les objets de premier niveau aux colonnes. Pour effectuer un mappage vers des niveaux plus profonds du schéma, ou si les noms de champs et de colonnes ne correspondent pas, utilisez un JSONPaths fichier pour définir le mappage. Pour de plus amples informations, veuillez consulter JSONPathsfichier.

Si la valeur associée à une clé est un type de données Avro complexe tel qu'un octet, un tableau, un enregistrement, une carte ou un lien, COPY charge la valeur sous forme de chaîne. Ici, la chaîne est la JSON représentation des données. COPYcharge les types de données Avro enum sous forme de chaînes, dont le contenu est le nom du type. Pour obtenir un exemple, consultez COPYà partir du JSON format.

La taille maximale de l’en-tête du fichier Avro, qui inclut les métadonnées de fichiers et de schéma, est de 1 Mo.  

La taille maximale d’un seul bloc de données Avro est de 4 Mo. Ce qui est différent de la taille de ligne maximale. Si la taille maximale d'un seul bloc de données Avro est dépassée, même si la taille de ligne qui en résulte est inférieure à la limite de 4 Mo, la COPY commande échoue.

Lors du calcul de la taille des lignes, Amazon Redshift compte deux fois les barres verticales (|) en interne. Si les données entrées contiennent un très grand nombre de barres verticales, la taille des lignes peut dépasser 4 Mo même si la taille du bloc de données est inférieure à 4 Mo.

JSON[AS] 'json_option'

Les données source sont au JSON format.

JSONle format est pris en charge COPY à partir de ces services et protocoles :

  • Amazon S3

  • COPYdepuis Amazon EMR

  • COPYà partir de SSH

JSONn'est pas pris en charge COPY depuis DynamoDB.

Les valeurs valides pour json_option sont les suivantes :

  • 'auto'

  • 'auto ignorecase'

  • 's3://jsonpaths_file'

  • 'noshred'

La valeur par défaut est 'auto'. Amazon Redshift ne divise pas les attributs des JSON structures en plusieurs colonnes lors du chargement d'un document. JSON

Par défaut, COPY tente de faire correspondre toutes les colonnes de la table cible aux clés de nom de JSON champ. Pour charger un sous-ensemble de colonnes, vous pouvez éventuellement spécifier une liste de colonnes. Si les clés de nom de JSON champ ne sont pas toutes en minuscules, vous pouvez utiliser l''auto ignorecase'option ou a JSONPathsfichier pour mapper explicitement les noms de colonnes aux clés de nom de JSON champ.

Si une colonne de la table cible est omise de la liste des colonnes, COPY charge l'DEFAULTexpression de la colonne cible. Si la colonne cible n'a pas de valeur par défaut, COPY tente de chargerNULL. Si une colonne est incluse dans la liste des colonnes et COPY ne trouve aucun champ correspondant dans les JSON données, COPY tente de la NULL charger dans la colonne.

En cas de COPY tentative d'attribution NULL à une colonne définie comme NOTNULL, la COPY commande échoue.

COPYmappe les éléments de données des données JSON sources aux colonnes de la table cible. Pour cela, elle fait correspondre les clés d’objet (ou les noms) dans les paires nom-valeur source aux noms des colonnes de la table cible.

Reportez-vous aux informations suivantes sur chaque valeur json_option :

’auto’

Avec cette option, la mise en correspondance est sensible à la casse. Les noms de colonnes dans les tables Amazon Redshift sont toujours en minuscules. Ainsi, lorsque vous utilisez 'auto' cette option, les noms de JSON champs correspondants doivent également être en minuscules.

’auto ignorecase’

Avec cette option, la mise en correspondance n’est pas sensible à la casse. Les noms de colonnes dans les tables Amazon Redshift sont toujours en minuscules. Ainsi, lorsque vous utilisez 'auto ignorecase' cette option, les noms de JSON champs correspondants peuvent être en minuscules, en majuscules ou en majuscules.

’s3://jsonpaths_file

Avec cette option, COPY utilise le JSONPaths fichier nommé pour mapper les éléments de données des données JSON sources aux colonnes de la table cible. L’argument s3://jsonpaths_file doit être une clé d’objet Amazon S3 faisant explicitement référence à un seul fichier. Par exemple : 's3://amzn-s3-demo-bucket/jsonpaths.txt’. L’argument ne peut pas être un préfixe de clé. Pour plus d'informations sur l'utilisation d'un JSONPaths fichier, consultezJSONPathsfichier.

Dans certains cas, le fichier spécifié par jsonpaths_file a le même préfixe que le chemin spécifié par copy_from_s3_objectpath pour les fichiers de données. Si tel est le cas, COPY lit le JSONPaths fichier sous forme de fichier de données et renvoie des erreurs. Supposons, par exemple, que vos fichiers de données utilisent le chemin de l'objet s3://amzn-s3-demo-bucket/my_data.json et que votre JSONPaths fichier le soits3://amzn-s3-demo-bucket/my_data.jsonpaths. Dans ce cas, COPY tente de charger my_data.jsonpaths sous forme de fichier de données.

’noshred’

Avec cette option, Amazon Redshift ne divise pas les attributs des JSON structures en plusieurs colonnes lors du chargement d'un document. JSON

JSONfichier de données

Le fichier de JSON données contient un ensemble d'objets ou de tableaux. COPYcharge chaque JSON objet ou tableau sur une ligne de la table cible. Chaque objet ou tableau correspondant à une ligne doit être une structure autonome au niveau de la racine, c'est-à-dire qu'il ne doit pas être membre d'une autre structure. JSON

Un JSON objet commence et se termine par des accolades ({}) et contient une collection non ordonnée de paires nom-valeur. Chaque paire de nom et de valeur est séparée par deux points, et les paires sont séparées par des virgules. Par défaut, la clé d’objet, ou le nom, dans les paires nom-valeur, doit correspondre au nom de la colonne correspondante dans la table. Les noms de colonnes dans les tables Amazon Redshift sont toujours en minuscules. Les clés de nom de JSON champ correspondantes doivent donc également être en minuscules. Si les noms et JSON les clés de vos colonnes ne correspondent pas, utilisez a JSONPathsfichier pour associer explicitement les colonnes aux clés.

L'ordre dans un JSON objet n'a pas d'importance. Tous les noms qui ne correspondent pas à un nom de colonne sont ignorés. Ce qui suit montre la structure d'un JSON objet simple.

{ "column1": "value1", "column2": value2, "notacolumn" : "ignore this value" }

Un JSON tableau commence et se termine par des crochets ([]) et contient un ensemble ordonné de valeurs séparées par des virgules. Si vos fichiers de données utilisent des tableaux, vous devez spécifier un JSONPaths fichier pour faire correspondre les valeurs aux colonnes. Ce qui suit montre la structure d'un JSON tableau simple.

["value1", value2]

Ils JSON doivent être bien formés. Par exemple, les objets ou les tableaux ne peuvent pas être séparés par des virgules ou tout autre caractère à l’exception des espaces vides. Les chaînes doivent être placées entre guillemets doubles. Les guillemets doivent être des guillemets simples (0x22), ni culbutés, ni courbes.

La taille maximale d'un JSON objet ou d'un tableau, y compris les accolades, est de 4 Mo. Ce qui est différent de la taille de ligne maximale. Si la taille maximale d'un seul JSON objet ou d'un tableau est dépassée, même si la taille de ligne obtenue est inférieure à la limite de 4 Mo, la COPY commande échoue.

Lors du calcul de la taille des lignes, Amazon Redshift compte deux fois les barres verticales (|) en interne. Si les données entrées contiennent un très grand nombre de barres verticales, la taille des lignes peut dépasser 4 Mo même si la taille de l’objet est inférieure à 4 Mo.

COPYse charge \n sous forme de caractère de nouvelle ligne et se charge \t sous forme de caractère de tabulation. Pour charger une barre oblique inverse, précédez-la d’une barre oblique inverse ( \\ ).

COPYrecherche dans la JSON source spécifiée un JSON objet ou un tableau valide et bien formé. Si vous COPY rencontrez des caractères autres que des espaces blancs avant de localiser une JSON structure utilisable, ou entre JSON des objets ou des tableaux valides, COPY renvoie une erreur pour chaque instance. Ces erreurs sont prises en compte dans le décompte des MAXERROR erreurs. Lorsque le nombre d'erreurs est égal ou supérieurMAXERROR, COPY échoue.

Pour chaque erreur, Amazon Redshift enregistre une ligne dans la table ERRORS système STL _ LOAD _. La NUMBER colonne LINE _ enregistre la dernière ligne de l'JSONobjet à l'origine de l'erreur.

S'IGNOREHEADERil est spécifié, COPY ignore le nombre de lignes spécifié dans les JSON données. Les caractères de nouvelle ligne dans les JSON données sont toujours pris en compte pour les IGNOREHEADER calculs.

COPYcharge les chaînes vides en tant que champs vides par défaut. Si cela EMPTYASNULL est spécifié, COPY charge les chaînes vides pour CHAR et les VARCHAR champs sous la formeNULL. Les chaînes vides pour les autres types de données, tels queINT, sont toujours chargées avecNULL.

Les options suivantes ne sont pas prises en charge avec JSON :

  • CSV

  • DELIMITER

  • ESCAPE

  • FILLRECORD

  • FIXEDWIDTH

  • IGNOREBLANKLINES

  • NULLEN TANT QUE

  • READRATIO

  • REMOVEQUOTES

Pour de plus amples informations, veuillez consulter COPYà partir du JSON format. Pour plus d'informations sur les structures de JSON données, rendez-vous sur www.json.org.

JSONPathsfichier

Si vous chargez à partir de données JSON au format -formatées ou de données source Avro, les éléments de données de premier niveau des données sources sont COPY mappés par défaut avec les colonnes de la table cible. Pour ce faire, elle met en correspondance chaque nom (ou clé d’objet) dans une paire nom-valeur avec le nom d’une colonne de la table cible.

Si les noms de vos colonnes et vos clés d'objet ne correspondent pas, ou pour les mapper à des niveaux plus profonds de la hiérarchie des données, vous pouvez utiliser un JSONPaths fichier pour mapper explicitement des éléments de données Avro à des colonnes. JSON Le JSONPaths fichier mappe JSON les éléments de données en colonnes en faisant correspondre l'ordre des colonnes dans la table ou la liste de colonnes cible.

Le JSONPaths fichier ne doit contenir qu'un seul JSON objet (pas un tableau). L'JSONobjet est une paire nom-valeur. La clé d’objet, qui est le nom de la paire nom-valeur, doit être "jsonpaths". La valeur de la paire nom-valeur est un tableau d'JSONPathexpressions. Chaque JSONPath expression fait référence à un seul élément de la hiérarchie JSON des données ou du schéma Avro, de la même manière qu'une XPath expression fait référence aux éléments d'un XML document. Pour de plus amples informations, veuillez consulter JSONPathexpressions.

Pour utiliser un JSONPaths fichier, ajoutez le AVRO mot clé JSON or à la COPY commande. Spécifiez le nom du compartiment S3 et le chemin de l'objet du JSONPaths fichier en utilisant le format suivant.

COPY tablename FROM 'data_source' CREDENTIALS 'credentials-args' FORMAT AS { AVRO | JSON } 's3://jsonpaths_file';

La valeur s3://jsonpaths_file doit être une clé d’objet Amazon S3 faisant explicitement référence à un seul fichier, tel que 's3://amzn-s3-demo-bucket/jsonpaths.txt'. Elle ne pas être un préfixe de clé.

Dans certains cas, si vous chargez à partir d’Amazon S3, le fichier spécifié par jsonpaths_file a le même préfixe que le chemin spécifié par copy_from_s3_objectpath pour les fichiers de données. Si tel est le cas, COPY lit le JSONPaths fichier sous forme de fichier de données et renvoie des erreurs. Supposons, par exemple, que vos fichiers de données utilisent le chemin de l'objet s3://amzn-s3-demo-bucket/my_data.json et que votre JSONPaths fichier le soits3://amzn-s3-demo-bucket/my_data.jsonpaths. Dans ce cas, COPY tente de charger my_data.jsonpaths sous forme de fichier de données.

Si le nom de la clé est une chaîne autre que"jsonpaths", la COPY commande ne renvoie pas d'erreur, mais elle ignore jsonpaths_file et utilise l'argument à la place. 'auto'

Si l'une des situations suivantes se produit, la COPY commande échoue :

  • JSONIl est mal formé.

  • Il y a plus d'un JSON objet.

  • Tous les caractères sauf les espaces vides existent en dehors de l’objet.

  • Un élément de tableau est une chaîne vide ou n’est pas une chaîne.

MAXERRORne s'applique pas au JSONPaths fichier.

Le JSONPaths fichier ne doit pas être chiffré, même si l'ENCRYPTEDoption est spécifiée.

Pour de plus amples informations, veuillez consulter COPYà partir du JSON format.

JSONPathexpressions

Le JSONPaths fichier utilise des JSONPath expressions pour mapper les champs de données aux colonnes cibles. Chaque JSONPath expression correspond à une colonne de la table cible Amazon Redshift. L'ordre des éléments du JSONPath tableau doit correspondre à l'ordre des colonnes de la table cible ou de la liste des colonnes, si une liste de colonnes est utilisée.

Les guillemets doubles sont obligatoires comme illustré, aussi bien pour les noms de champ que pour les valeurs. Les guillemets doivent être des guillemets simples (0x22), ni culbutés, ni courbes.

Si aucun élément d'objet référencé par une JSONPath expression n'est trouvé dans les JSON données, COPY tente de charger une NULL valeur. Si l'objet référencé est mal formé, COPY renvoie une erreur de chargement.

Si aucun élément de tableau référencé par une JSONPath expression n'est trouvé dans les données JSON ou Avro, l'erreur suivante COPY échoue : Invalid JSONPath format: Not an array or index out of range. Supprimez les éléments du tableau JSONPaths qui n'existent pas dans les données sources et vérifiez que les tableaux des données sources sont bien formés. 

Les JSONPath expressions peuvent utiliser la notation entre crochets ou la notation par points, mais vous ne pouvez pas mélanger les notations. L'exemple suivant montre des JSONPath expressions utilisant la notation entre crochets.

{ "jsonpaths": [ "$['venuename']", "$['venuecity']", "$['venuestate']", "$['venueseats']" ] }

L'exemple suivant montre des JSONPath expressions utilisant la notation par points.

{ "jsonpaths": [ "$.venuename", "$.venuecity", "$.venuestate", "$.venueseats" ] }

Dans le contexte de la COPY syntaxe Amazon Redshift, une JSONPath expression doit spécifier le chemin explicite vers un élément de nom unique dans une structure de données hiérarchique JSON ou Avro. Amazon Redshift ne prend en charge aucun JSONPath élément, tel que les caractères génériques ou les expressions de filtre, susceptibles de donner lieu à un chemin ambigu ou à plusieurs éléments de nom.

Pour de plus amples informations, veuillez consulter COPYà partir du JSON format.

Utilisation JSONPaths avec Avro Data

L’exemple suivant illustre un schéma Avro à plusieurs niveaux.

{ "name": "person", "type": "record", "fields": [ {"name": "id", "type": "int"}, {"name": "guid", "type": "string"}, {"name": "isActive", "type": "boolean"}, {"name": "age", "type": "int"}, {"name": "name", "type": "string"}, {"name": "address", "type": "string"}, {"name": "latitude", "type": "double"}, {"name": "longitude", "type": "double"}, { "name": "tags", "type": { "type" : "array", "name" : "inner_tags", "items" : "string" } }, { "name": "friends", "type": { "type" : "array", "name" : "inner_friends", "items" : { "name" : "friends_record", "type" : "record", "fields" : [ {"name" : "id", "type" : "int"}, {"name" : "name", "type" : "string"} ] } } }, {"name": "randomArrayItem", "type": "string"} ] }

L'exemple suivant montre un JSONPaths fichier qui utilise des AvroPath expressions pour faire référence au schéma précédent.

{ "jsonpaths": [ "$.id", "$.guid", "$.address", "$.friends[0].id" ] }

L'JSONPathsexemple inclut les éléments suivants :

jsonpaths

Nom de l'JSONobjet contenant les AvroPath expressions.

[ … ]

Les crochets entourent le JSON tableau qui contient les éléments du chemin.

$

Le symbole du dollar fait référence à l’élément racine du schéma Avro, qui est le tableau "fields".

"$.id",

La cible de l' AvroPath expression. Dans ce cas, la cible est l’élément dans le tableau "fields" avec le nom "id". Les expressions sont séparées par des virgules.

"$.friends[0].id"

Les crochets indiquent un index de tableau. JSONPathles expressions utilisent une indexation basée sur zéro. Cette expression fait donc référence au premier élément du "friends" tableau portant le nom. "id"

La syntaxe du schéma Avro nécessite l’utilisation de champs internes pour définir la structure d’enregistrement et les types de données du tableau. Les champs internes sont ignorés par les AvroPath expressions. Par exemple, le champ "friends" définit un tableau nommé "inner_friends", qui définit à son tour un enregistrement nommé "friends_record". L' AvroPath expression faisant référence au champ "id" peut ignorer les champs supplémentaires pour référencer directement le champ cible. Les AvroPath expressions suivantes font référence aux deux champs appartenant au "friends" tableau.

"$.friends[0].id" "$.friends[0].name"

Paramètres du format des données en colonnes

Outre les formats de données standard, COPY prend en charge les formats de données en colonnes suivants pour COPY Amazon S3. COPYà partir du format colonnaire est pris en charge avec certaines restrictions. Pour de plus amples informations, veuillez consulter COPYà partir de formats de données en colonnes.

ORC

Charge les données à partir d'un fichier utilisant le format de fichier Optimized Row Columnar (ORC).

PARQUET

Charge les données à partir d’un fichier qui utilise le format de fichier Parquet.