Ongoing service disruptions
For the most recent update on ongoing service disruptions affecting the AWS Middle East (UAE) Region (ME-CENTRAL-1), refer to the AWS Health Dashboard. For information on AWS Service migration, see How do I migrate my services to another region?
Comment utiliser le type de données SUPER dans Amazon Redshift pour gérer et interroger les données JSON ?
Je souhaite utiliser le type de données SUPER dans Amazon Redshift pour gérer et interroger les données JSON.
Brève description
Utilisez le type de données SUPER pour stocker des données semi-structurées dans vos entrepôts de données Amazon Redshift. Vous pouvez interroger le type de données SUPER à l'aide du langage PartiQL.
Vous pouvez également utiliser Amazon Redshift Spectrum pour la prise en charge des données semi-structurées.
Résolution
Vous pouvez utiliser la commande COPY ou la commande INSERT avec la fonction JSON_PARSE pour charger JSON dans les données SUPER. Lorsque vous chargez des données volumineuses, il est recommandé d'utiliser la commande COPY.
Utiliser la commande COPY
Utilisez la commande COPY pour charger le JSON à partir de fichiers de données dans Amazon Simple Storage Service (Amazon S3). Pour plus d'informations, consultez la section Chargement de données semi-structurées dans Amazon Redshift.
Pour charger le JSON dans une colonne de données SUPER unique, utilisez l'option noshred.
Pour charger du JSON dans plusieurs colonnes, utilisez l'option auto ou spécifiez le fichier jsonpaths. Lorsque vous utilisez l'option auto, COPY fait correspondre les attributs JSON de niveau supérieur avec les noms de colonnes et vous permet de charger des valeurs imbriquées en tant que valeurs SUPER. Les exemples suivants montrent comment utiliser l'option auto.
Exemple de fichier de données JSON :
{"r_regionkey":0,"r_name":"AFRICA","r_nations":[{"n_nationkey":11,"n_name":"ALGERIA"},{"n_nationkey":5,"n_name":"ETHIOPIA"},{"n_nationkey":14,"n_name":"KENYA"}]} {"r_regionkey":1,"r_name":"AMERICA","r_nations":[{"n_nationkey":1,"n_name":"ARGENTINA"},{"n_nationkey":2,"n_name":"BRAZIL"}]} {"r_regionkey":2,"r_name":"ASIA","r_nations":[{"n_nationkey":8,"n_name":"INDIA"}]}
Exemple de commande COPY :
# CREATE TABLE region_nations ( r_regionkey smallint ,r_name varchar ,r_nations super ); # COPY region_nations FROM 's3://<S3 path to the JSON data file>' IAM_ROLE '<IAM role>' FORMAT JSON 'auto'; # SELECT * FROM region_nations; r_regionkey | r_name | r_nations -------------+---------+------------------------------------------------------------------------------------------------------------------- 0 | AFRICA | [{"n_nationkey":11,"n_name":"ALGERIA"},{"n_nationkey":5,"n_name":"ETHIOPIA"},{"n_nationkey":14,"n_name":"KENYA"}] 1 | AMERICA | [{"n_nationkey":1,"n_name":"ARGENTINA"},{"n_nationkey":2,"n_name":"BRAZIL"}] 2 | ASIA | [{"n_nationkey":8,"n_name":"INDIA"}] (3 rows)
Chargez les données JSON dans un fichier texte ou .csv dans SUPER. Assurez-vous que le format JSON est valide. Amazon Redshift utilise des règles d'échappement standard pour les fichiers .csv.
Exemple de fichier .csv :
r_regionkey,r_name,r_nations 0,AFRICA,"[{""n_nationkey"":11,""n_name"":""ALGERIA""},{""n_nationkey"":5,""n_name"":""ETHIOPIA""},{""n_nationkey"":14,""n_name"":""KENYA""}]" 1,AMERICA,"[{""n_nationkey"":1,""n_name"":""ARGENTINA""},{""n_nationkey"":2,""n_name"":""BRAZIL""}]" 2,ASIA,"[{""n_nationkey"":8,""n_name"":""INDIA""}]"
Exemple de commande COPY :
# CREATE TABLE region_nations ( r_regionkey smallint ,r_name varchar ,r_nations super ); # COPY region_nations FROM 's3://<S3 path to the CSV file>' IAM_ROLE '<IAM role>' FORMAT CSV IGNOREHEADER 1; # SELECT * FROM region_nations; r_regionkey | r_name | r_nations -------------+---------+------------------------------------------------------------------------------------------------------------------- 0 | AFRICA | [{"n_nationkey":11,"n_name":"ALGERIA"},{"n_nationkey":5,"n_name":"ETHIOPIA"},{"n_nationkey":14,"n_name":"KENYA"}] 1 | AMERICA | [{"n_nationkey":1,"n_name":"ARGENTINA"},{"n_nationkey":2,"n_name":"BRAZIL"}] 2 | ASIA | [{"n_nationkey":8,"n_name":"INDIA"}] (3 rows)
Utiliser la commande INSERT et la fonction JSON_PARSE
La fonction JSON_PARSE analyse les données au format JSON et les convertit au type de données SUPER que vous pouvez utiliser avec la commande INSERT.
Exemple de commande :
# CREATE TABLE region_nations ( r_regionkey smallint ,r_name varchar ,r_nations super ); # INSERT INTO region_nations VALUES(0,'AFRICA',json_parse('[{"n_nationkey":11,"n_name":"ALGERIA"},{"n_nationkey":5,"n_name":"ETHIOPIA"},{"n_nationkey":14,"n_name":"KENYA"}]')); # INSERT INTO region_nations VALUES(1,'AMERICA',json_parse('[{"n_nationkey":1,"n_name":"ARGENTINA"},{"n_nationkey":2,"n_name":"BRAZIL"}]')); # INSERT INTO region_nations VALUES(2,'ASIA',json_parse('[{"n_nationkey":8,"n_name":"INDIA"}]')); # SELECT * FROM region_nations; r_regionkey | r_name | r_nations -------------+---------+------------------------------------------------------------------------------------------------------------------- 0 | AFRICA | [{"n_nationkey":11,"n_name":"ALGERIA"},{"n_nationkey":5,"n_name":"ETHIOPIA"},{"n_nationkey":14,"n_name":"KENYA"}] 1 | AMERICA | [{"n_nationkey":1,"n_name":"ARGENTINA"},{"n_nationkey":2,"n_name":"BRAZIL"}] 2 | ASIA | [{"n_nationkey":8,"n_name":"INDIA"}] (3 rows)
Interroger des données SUPER avec PartiQL
Amazon Redshift utilise le langage PartiQL pour un accès compatible avec SQL aux données relationnelles, semi-structurées et imbriquées. Pour plus d'informations, consultez la section Interroger des données semi-structurées.
Exemple de requête :
# SELECT * FROM region_nations; r_regionkey | r_name | r_nations -------------+---------+------------------------------------------------------------------------------------------------------------------- 0 | AFRICA | [{"n_nationkey":11,"n_name":"ALGERIA"},{"n_nationkey":5,"n_name":"ETHIOPIA"},{"n_nationkey":14,"n_name":"KENYA"}] 1 | AMERICA | [{"n_nationkey":1,"n_name":"ARGENTINA"},{"n_nationkey":2,"n_name":"BRAZIL"}] 2 | ASIA | [{"n_nationkey":8,"n_name":"INDIA"}] (3 rows) # SELECT region_nations.r_nations[1].n_name FROM region_nations; n_name ------------ "ETHIOPIA" "BRAZIL" (3 rows) # SELECT rn.r_regionkey, rn.r_name, n FROM region_nations rn, rn.r_nations n; r_regionkey | r_name | n -------------+---------+---------------------------------------- 0 | AFRICA | {"n_nationkey":11,"n_name":"ALGERIA"} 0 | AFRICA | {"n_nationkey":5,"n_name":"ETHIOPIA"} 0 | AFRICA | {"n_nationkey":14,"n_name":"KENYA"} 1 | AMERICA | {"n_nationkey":1,"n_name":"ARGENTINA"} 1 | AMERICA | {"n_nationkey":2,"n_name":"BRAZIL"} 2 | ASIA | {"n_nationkey":8,"n_name":"INDIA"} (6 rows)
Décharger les données SUPER dans un fichier JSON
Vous pouvez utiliser la commande UNLOAD pour extraire des données du type de données SUPER et les stocker dans S3 en tant que document JSON.
Exemple de commande :
# SELECT * FROM region_nations; r_regionkey | r_name | r_nations -------------+---------+------------------------------------------------------------------------------------------------------------------- 0 | AFRICA | [{"n_nationkey":11,"n_name":"ALGERIA"},{"n_nationkey":5,"n_name":"ETHIOPIA"},{"n_nationkey":14,"n_name":"KENYA"}] 1 | AMERICA | [{"n_nationkey":1,"n_name":"ARGENTINA"},{"n_nationkey":2,"n_name":"BRAZIL"}] 2 | ASIA | [{"n_nationkey":8,"n_name":"INDIA"}] (3 rows) # UNLOAD ('SELECT * FROM region_nations') TO 's3://<S3 path>' IAM_ROLE '<IAM role>' FORMAT JSON;
Exemple de document JSON :
{"r_regionkey":0,"r_name":"AFRICA","r_nations":[{"n_nationkey":11,"n_name":"ALGERIA"},{"n_nationkey":5,"n_name":"ETHIOPIA"},{"n_nationkey":14,"n_name":"KENYA"}]} {"r_regionkey":1,"r_name":"AMERICA","r_nations":[{"n_nationkey":1,"n_name":"ARGENTINA"},{"n_nationkey":2,"n_name":"BRAZIL"}]} {"r_regionkey":2,"r_name":"ASIA","r_nations":[{"n_nationkey":8,"n_name":"INDIA"}]}
- Sujets
- Analytics
- Balises
- Amazon Redshift
- Langue
- Français

Contenus pertinents
- demandé il y a 3 ans
- demandé il y a 6 mois
- demandé il y a 3 ans
- demandé il y a un an
AWS OFFICIELA mis à jour il y a un an
AWS OFFICIELA mis à jour il y a un an
AWS OFFICIELA mis à jour il y a un an