Chargement de données dans un cluster Amazon Aurora My SQL DB à partir de fichiers texte dans un compartiment Amazon S3 - Amazon Aurora

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.

Chargement de données dans un cluster Amazon Aurora My SQL DB à partir de fichiers texte dans un compartiment Amazon S3

Vous pouvez utiliser l'instruction LOAD DATA FROM S3 ou LOAD XML FROM S3 pour charger les données de fichiers stockés dans un compartiment Amazon S3. Dans Aurora MySQL, les fichiers sont d'abord stockés sur le disque local, puis importés dans la base de données. Une fois les importations dans la base de données effectuées, les fichiers locaux sont supprimés.

Note

Le chargement de données dans une table à partir de fichiers texte n'est pas pris en charge pour Aurora Serverless v1. Elle est prise en charge pour Aurora Serverless v2.

Octroi à Aurora d'un accès à Amazon S3

Avant de charger des données depuis un compartiment Amazon S3, vous devez d'abord autoriser votre cluster Aurora My SQL DB à accéder à Amazon S3.

Pour donner à Aurora My SQL l'accès à Amazon S3
  1. Créez une politique AWS Identity and Access Management (IAM) qui fournit les autorisations de compartiment et d'objet permettant à votre cluster Aurora My SQL DB d'accéder à Amazon S3. Pour obtenir des instructions, consultez Création d'une IAM politique d'accès aux ressources Amazon S3.

    Note

    Dans Aurora My SQL version 3.05 et versions ultérieures, vous pouvez charger des objets chiffrés à l'aide de la gestion client AWS KMS keys. Pour ce faire, incluez l'kms:Decryptautorisation dans votre IAM politique. Pour de plus amples informations, veuillez consulter Création d'une stratégie IAM pour accéder aux ressources AWS KMS.

    Vous n'avez pas besoin de cette autorisation pour charger des objets chiffrés à l'aide Clés gérées par AWS de clés gérées par Amazon S3 (SSE-S3).

  2. Créez un IAM rôle et associez la IAM politique que vous avez créée Création d'une IAM politique d'accès aux ressources Amazon S3 au nouveau IAM rôle. Pour obtenir des instructions, consultez Création d'un rôle IAM pour autoriser Amazon Aurora à accéder aux services AWS.

  3. Assurez-vous que le cluster de base de données utilise un groupe de paramètres de cluster de base de données personnalisé.

    Pour de plus amples informations sur la création d'un groupe de paramètres de cluster de base de données, veuillez consulter Création d'un groupe de paramètres de cluster de base de données dans Amazon Aurora.

  4. Pour Aurora My SQL version 2, définissez le paramètre aurora_load_from_s3_role ou le paramètre du aws_default_s3_role cluster de base de données sur le nom de ressource Amazon (ARN) du nouveau IAM rôle. Si aucun IAM rôle n'est spécifié pouraurora_load_from_s3_role, Aurora utilise le IAM rôle spécifié dansaws_default_s3_role.

    Pour Aurora My SQL version 3, utilisezaws_default_s3_role.

    Si le cluster fait partie d'une base de données globale Aurora, définissez ce paramètre pour chaque cluster Aurora de cette base de données. Bien que seul le cluster principal d'une base de données globale Aurora puisse charger des données, un autre cluster peut être promu en tant que cluster principal par le mécanisme de basculement.

    Pour plus d'informations sur les paramètres de cluster de base de données, consultez Paramètres de cluster de base de données et d'instance de base de données Amazon Aurora.

  5. Pour permettre aux utilisateurs de base de données d'un cluster Aurora My SQL DB d'accéder à Amazon S3, associez le rôle que vous avez créé Création d'un rôle IAM pour autoriser Amazon Aurora à accéder aux services AWS au cluster de base de données. Pour une base de données globale Aurora, associez le rôle à chaque cluster Aurora de cette base de données. Pour plus d'informations sur l'association d'un IAM rôle à un cluster de base de données, consultezAssociation d'un rôle IAM à un cluster de bases de données Amazon Aurora MySQL.

  6. Configurez votre cluster Aurora My SQL DB pour autoriser les connexions sortantes vers Amazon S3. Pour obtenir des instructions, consultez Permettre la communication réseau entre Amazon Aurora et d'autres AWS services.

    Si votre cluster de base de données n'est pas accessible au public et se trouve dans un sous-réseau VPC public, il est privé. Vous pouvez créer un point de terminaison de passerelle S3 pour accéder à votre compartiment S3. Pour plus d'informations, consultez Points de terminaison de passerelle pour Amazon S3.

    Pour une base de données globale Aurora, activez les connexions sortantes pour chaque cluster Aurora de cette base de données.

Octroi de privilèges pour charger des données dans Amazon Aurora My SQL

L'utilisateur de base de données qui émet l'instruction LOAD DATA FROM S3 ou LOAD XML FROM S3 doit avoir un rôle ou un privilège spécifique pour l'émettre. Dans Aurora My SQL version 3, vous accordez le AWS_LOAD_S3_ACCESS rôle. Dans Aurora My SQL version 2, vous accordez le LOAD FROM S3 privilège. L'utilisateur administratif d'un cluster de base de données reçoit le rôle ou le privilège approprié par défaut. Vous pouvez accorder le privilège à un autre utilisateur à l'aide des instructions suivantes.

Utilisez l'instruction suivante pour Aurora My SQL version 3 :

GRANT AWS_LOAD_S3_ACCESS TO 'user'@'domain-or-ip-address'
Astuce

Lorsque vous utilisez la technique des rôles dans Aurora My SQL version 3, vous pouvez également activer le rôle à l'aide de l'SET ROLE ALLinstruction SET ROLE role_name or. Si vous ne connaissez pas le système de rôles My SQL 8.0, vous pouvez en savoir plus dansModèle de privilège basé sur les rôles. Pour plus de détails, consultez la section Utilisation des rôles dans le manuel My SQL Reference.

Cela s'applique uniquement à la session active en cours. Lorsque vous vous reconnectez, vous devez exécuter à nouveau l'SET ROLEinstruction pour accorder des privilèges. Pour plus d'informations, voir la SETROLEdéclaration contenue dans le manuel My SQL Reference.

Vous pouvez utiliser le paramètre activate_all_roles_on_login de cluster de base de données pour activer automatiquement tous les rôles lorsqu'un utilisateur se connecte à une instance de base de données. Lorsque ce paramètre est défini, il n'est généralement pas nécessaire d'appeler explicitement l'SET ROLEinstruction pour activer un rôle. Pour plus d'informations, consultez activate_all_roles_on_login dans le manuel My Reference. SQL

Toutefois, vous devez appeler SET ROLE ALL explicitement au début d'une procédure stockée pour activer le rôle, lorsque la procédure stockée est appelée par un autre utilisateur.

Utilisez l'instruction suivante pour Aurora My SQL version 2 :

GRANT LOAD FROM S3 ON *.* TO 'user'@'domain-or-ip-address'

Le AWS_LOAD_S3_ACCESS rôle et le LOAD FROM S3 privilège sont spécifiques à Amazon Aurora et ne sont pas disponibles pour les SQL bases de données My DB externes ni RDS pour les instances My SQL DB. Si vous avez configuré la réplication entre un cluster de base de données Aurora en tant que source de réplication et une base de SQL données My Database en tant que client de réplication, l'GRANTinstruction relative au rôle ou au privilège entraîne l'arrêt de la réplication avec une erreur. Vous pouvez ignorer sans risque l'erreur afin de reprendre la réplication. Pour ignorer l'erreur sur une SQL instance RDS for My, utilisez la procédure mysql_rds_skip_repl_error. Pour ignorer l'erreur sur une SQL base de données My externe, utilisez la variable système slave_skip_errors (Aurora My SQL version 2) ou la variable système replica_skip_errors (Aurora My version 3). SQL

Note

L'utilisateur de la base de données doit disposer de INSERT privilèges pour la base de données dans laquelle il charge les données.

Spécification du chemin (URI) vers un compartiment Amazon S3

La syntaxe permettant de spécifier le chemin (URI) vers les fichiers stockés dans un compartiment Amazon S3 est la suivante.

s3-region://amzn-s3-demo-bucket/file-name-or-prefix

Le chemin d'accès inclut les valeurs suivantes :

  • region(facultatif) — La AWS région qui contient le compartiment Amazon S3 à partir duquel le chargement doit être effectué. Cette valeur est facultative. Si vous ne spécifiez pas de valeur region, Aurora charge votre fichier à partir d'Amazon S3 dans la même région que votre cluster de base de données.

  • bucket-name – Nom du compartiment Amazon S3 qui contient les données à charger. Les préfixes d'objet qui identifient un chemin d'accès du dossier virtuel sont pris en charge.

  • file-name-or-prefix— Le nom du fichier texte ou XML du fichier Amazon S3, ou un préfixe identifiant un ou plusieurs textes ou XML fichiers à charger. Vous pouvez également spécifier un fichier manifeste qui identifie un ou plusieurs fichiers texte à charger. Pour plus d'informations sur l'utilisation d'un fichier manifeste pour charger des fichiers texte à partir d'Amazon S3, consultez Utilisation d'un manifeste pour spécifier les fichiers de données à charger.

Pour copier les fichiers URI for dans un compartiment S3
  1. Connectez-vous à la console Amazon S3 AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/s3/.

  2. Dans le volet de navigation, choisissez Buckets, puis choisissez le bucket que URI vous souhaitez copier.

  3. Sélectionnez le préfixe ou le fichier que vous souhaitez charger depuis S3.

  4. Choisissez Copy S3 URI.

LOADDATAFROMS3

Vous pouvez utiliser l'LOAD DATA FROM S3instruction pour charger des données à partir de n'importe quel format de fichier texte pris en charge par l'SQLLOADDATAINFILEinstruction My, par exemple des données texte séparées par des virgules. Les fichiers compressés ne sont pas pris en charge.

Note

Assurez-vous que votre cluster Aurora My SQL DB autorise les connexions sortantes vers S3. Pour de plus amples informations, veuillez consulter Permettre la communication réseau entre Amazon Aurora et d'autres AWS services.

Syntaxe

LOAD DATA [FROM] S3 [FILE | PREFIX | MANIFEST] 'S3-URI' [REPLACE | IGNORE] INTO TABLE tbl_name [PARTITION (partition_name,...)] [CHARACTER SET charset_name] [{FIELDS | COLUMNS} [TERMINATED BY 'string'] [[OPTIONALLY] ENCLOSED BY 'char'] [ESCAPED BY 'char'] ] [LINES [STARTING BY 'string'] [TERMINATED BY 'string'] ] [IGNORE number {LINES | ROWS}] [(col_name_or_user_var,...)] [SET col_name = expr,...]
Note

Dans Aurora My SQL version 3.05 et versions ultérieures, le mot clé FROM est facultatif.

Paramètres

L'instruction LOAD DATA FROM S3 utilise les paramètres obligatoires et facultatifs suivants. Vous trouverez plus de détails sur certains de ces paramètres dans la section LOADDATAStatement de la section Ma SQL documentation.

FILE | PREFIX | MANIFEST

Indique si les données sont chargées à partir d'un seul fichier, à partir de tous les fichiers qui correspondent à un préfixe donné ou à partir de tous les fichiers contenus dans un manifeste spécifié. FILE est la valeur par défaut.

S3- URI

Spécifie URI le fichier texte ou manifeste à charger, ou le préfixe Amazon S3 à utiliser. Spécifiez le URI en utilisant la syntaxe décrite dansSpécification du chemin (URI) vers un compartiment Amazon S3.

REPLACE | IGNORE

Détermine l'action à effectuer si une ligne d'entrée a les mêmes valeurs de clé uniques qu'une ligne existante dans la table de base de données.

  • Spécifiez REPLACE si vous souhaitez que la ligne d'entrée remplace la ligne existante dans la table.

  • Spécifiez IGNORE si vous souhaitez supprimer la ligne d'entrée.

INTO TABLE

Identifie le nom de la table de base de données dans laquelle charger les lignes d'entrée.

PARTITION

Exige que toutes les lignes d'entrée soient insérées dans les partitions identifiées par la liste spécifiée de noms de partition séparés par des virgules. Si une ligne d'entrée ne peut pas être insérée dans l'une des partitions spécifiées, l'instruction échoue et une erreur est renvoyée.

CHARACTER SET

Identifie le jeu de caractères des données du fichier d'entrée.

FIELDS | COLUMNS

Identifie la façon dont les champs ou les colonnes sont délimités dans le fichier d'entrée. Par défaut, les champs sont délimités par des tabulations.

LINES

Identifie la façon dont les lignes sont délimitées dans le fichier d'entrée. Les lignes sont délimitées par un caractère de saut de ligne ('\n') par défaut.

IGNORE number LINES | ROWS

Indique qu'un certain nombre de lignes au début du fichier d'entrée doivent être ignorées. Par exemple, vous pouvez utiliser IGNORE 1 LINES pour laisser de côté une ligne d'en-tête initiale contenant les noms de colonnes ou IGNORE 2 ROWS les deux premières lignes de données dans le fichier d'entrée. Si vous utilisez également PREFIX, IGNORE ignore un certain nombre de lignes au début du premier fichier d'entrée.

col_name_or_user_var, ...

Spécifie la liste séparée par des virgules d'un ou plusieurs noms de colonne ou de variables utilisateur qui identifient les colonnes à charger par nom. Le nom d'une variable utilisateur utilisé à cette fin doit correspondre au nom d'un élément dans le fichier texte, préfixé par @. Vous pouvez utiliser les variables utilisateur pour stocker les valeurs de champ correspondantes pour une réutilisation ultérieure.

Par exemple, l'instruction suivante charge la première colonne du fichier d'entrée dans la première colonne de table1 et affecte à la colonne table_column2 dans table1 la valeur d'entrée de la deuxième colonne divisée par 100.

LOAD DATA FROM S3 's3://amzn-s3-demo-bucket/data.txt' INTO TABLE table1 (column1, @var1) SET table_column2 = @var1/100;
SET

Spécifie la liste séparée par des virgules des opérations d'affectation qui attribuent aux colonnes de la table des valeurs non incluses dans le fichier d'entrée.

Par exemple, l'instruction suivante affecte aux deux premières colonnes de table1 les valeurs figurant dans les deux premières colonnes du fichier d'entrée, puis affecte à la colonne column3 dans table1 la valeur d'horodatage actuelle.

LOAD DATA FROM S3 's3://amzn-s3-demo-bucket/data.txt' INTO TABLE table1 (column1, column2) SET column3 = CURRENT_TIMESTAMP;

Vous pouvez utiliser des sous-requêtes dans la partie droite des affectations SET. Pour une sous-requête qui renvoie une valeur devant être assignée à une colonne, vous pouvez utiliser uniquement une sous-requête scalaire. En outre, vous ne pouvez pas utiliser une sous-requête pour sélectionner dans la table qui est en cours de chargement.

Vous ne pouvez pas utiliser le mot-clé LOCAL de l'instruction LOAD DATA FROM S3 si vous chargez des données à partir d'un compartiment Amazon S3.

Utilisation d'un manifeste pour spécifier les fichiers de données à charger

Vous pouvez utiliser l'LOAD DATA FROM S3instruction associée au MANIFEST mot-clé pour spécifier un fichier manifeste au JSON format répertoriant les fichiers texte à charger dans une table de votre cluster de bases de données.

Le JSON schéma suivant décrit le format et le contenu d'un fichier manifeste.

{ "$schema": "http://json-schema.org/draft-04/schema#", "additionalProperties": false, "definitions": {}, "id": "Aurora_LoadFromS3_Manifest", "properties": { "entries": { "additionalItems": false, "id": "/properties/entries", "items": { "additionalProperties": false, "id": "/properties/entries/items", "properties": { "mandatory": { "default": "false", "id": "/properties/entries/items/properties/mandatory", "type": "boolean" }, "url": { "id": "/properties/entries/items/properties/url", "maxLength": 1024, "minLength": 1, "type": "string" } }, "required": [ "url" ], "type": "object" }, "type": "array", "uniqueItems": true } }, "required": [ "entries" ], "type": "object" }

Chaque url élément du manifeste doit spécifier un URL avec le nom du compartiment et le chemin complet de l'objet du fichier, et pas simplement un préfixe. Vous pouvez utiliser un manifeste pour charger les fichiers de différents compartiments, différentes régions ou les fichiers qui ne partagent pas le même préfixe. Si aucune région n'est spécifiée dans leURL, la région du cluster de base de données Aurora cible est utilisée. L'exemple suivant illustre un fichier manifeste qui charge quatre fichiers à partir de trois compartiments différents.

{ "entries": [ { "url":"s3://aurora-bucket/2013-10-04-customerdata", "mandatory":true }, { "url":"s3-us-west-2://aurora-bucket-usw2/2013-10-05-customerdata", "mandatory":true }, { "url":"s3://aurora-bucket/2013-10-04-customerdata", "mandatory":false }, { "url":"s3://aurora-bucket/2013-10-05-customerdata" } ] }

L'indicateur facultatif mandatory spécifie si LOAD DATA FROM S3 doit renvoyer une erreur si le fichier est introuvable. L'indicateur mandatory est défini par défaut sur false. Quels que soient les paramètres de mandatory, LOAD DATA FROM S3 s'arrête si aucun fichier n'est trouvé.

Les fichiers manifestes peuvent avoir n'importe quelle extension. L'exemple suivant exécute l'instruction LOAD DATA FROM S3 avec le manifeste de l'exemple précédent, qui s'appelle customer.manifest.

LOAD DATA FROM S3 MANIFEST 's3-us-west-2://aurora-bucket/customer.manifest' INTO TABLE CUSTOMER FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' (ID, FIRSTNAME, LASTNAME, EMAIL);

Une fois l'instruction terminée, une entrée pour chaque fichier chargé avec succès est écrite dans la table aurora_s3_load_history.

Vérification des fichiers chargés grâce à la table aurora_s3_load_history

Chaque instruction LOAD DATA FROM S3 réussie met à jour la table aurora_s3_load_history dans le schéma mysql avec une entrée pour chaque fichier chargé.

Après avoir exécuté l'instruction LOAD DATA FROM S3, vous pouvez vérifier quels fichiers ont été chargés en interrogeant la table aurora_s3_load_history. Pour voir les fichiers chargés à la suite d'une itération de l'instruction, utilisez la WHERE clause pour filtrer les enregistrements sur Amazon S3 URI en fonction du fichier manifeste utilisé dans l'instruction. Si vous avez utilisé le même fichier manifeste auparavant, filtrez les résultats grâce au champ timestamp.

select * from mysql.aurora_s3_load_history where load_prefix = 'S3_URI';

La table suivante décrit les champs dans la table aurora_s3_load_history.

Champ Description

load_prefix

Le URI qui a été spécifié dans l'instruction de chargement. Cela URI peut correspondre à n'importe lequel des éléments suivants :

  • Un fichier de données unique pour une déclaration LOAD DATA FROM S3 FILE

  • Un préfixe Amazon S3 qui correspond à plusieurs fichiers de données pour une déclaration LOAD DATA FROM S3 PREFIX

  • Un fichier manifeste unique qui contient les noms des fichiers à charger pour une déclaration LOAD DATA FROM S3 MANIFEST

file_name

Nom d'un fichier chargé dans Aurora depuis Amazon S3 à l'aide de l'identifiant URI indiqué dans le load_prefix champ.

version_number

Le numéro de version du fichier identifié par le champ file_name qui a été chargé, si le compartiment Amazon S3 possède un numéro de version.

bytes_loaded

La taille du fichier chargé en octets.

load_timestamp

La valeur d'horodatage lorsque l'instruction LOAD DATA FROM S3 a fini de s'exécuter.

Exemples

L'instruction suivante charge les données d'un compartiment Amazon S3 situé dans la même région que le cluster de base de données Aurora. L'instruction lit les données séparées par des virgules dans le fichier customerdata.txt qui se trouve dans le amzn-s3-demo-bucket Compartiment Amazon S3, puis charge les données dans la tablestore-schema.customer-table.

LOAD DATA FROM S3 's3://amzn-s3-demo-bucket/customerdata.csv' INTO TABLE store-schema.customer-table FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' (ID, FIRSTNAME, LASTNAME, ADDRESS, EMAIL, PHONE);

L'instruction suivante charge les données d'un compartiment Amazon S3 situé dans une région différente du cluster de base de données Aurora. L'instruction lit les données séparées par des virgules dans tous les fichiers qui correspondent au préfixe d'employee-dataobjet dans le amzn-s3-demo-bucket Compartiment Amazon S3 dans la us-west-2 région, puis charge les données dans la employees table.

LOAD DATA FROM S3 PREFIX 's3-us-west-2://amzn-s3-demo-bucket/employee_data' INTO TABLE employees FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' (ID, FIRSTNAME, LASTNAME, EMAIL, SALARY);

L'instruction suivante charge les données des fichiers spécifiés dans un fichier JSON manifeste nommé q1_sales.json dans la table. sales

LOAD DATA FROM S3 MANIFEST 's3-us-west-2://amzn-s3-demo-bucket1/q1_sales.json' INTO TABLE sales FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' (MONTH, STORE, GROSS, NET);

LOADXMLFROMS3

Vous pouvez utiliser LOAD XML FROM S3 cette instruction pour charger des données à partir de XML fichiers stockés dans un compartiment Amazon S3 dans l'un des trois XML formats suivants :

  • Les noms de colonnes en tant qu'attributs d'un élément <row>. La valeur d'attribut identifie le contenu du champ de table.

    <row column1="value1" column2="value2" .../>
  • Les noms de colonnes en tant qu'éléments enfants d'un élément <row>. La valeur de l'élément enfant identifie le contenu du champ de table.

    <row> <column1>value1</column1> <column2>value2</column2> </row>
  • Les noms de colonnes dans l'attribut name des éléments <field> dans un élément <row>. La valeur de l'élément <field> identifie le contenu du champ de table.

    <row> <field name='column1'>value1</field> <field name='column2'>value2</field> </row>

Syntaxe

LOAD XML FROM S3 'S3-URI' [REPLACE | IGNORE] INTO TABLE tbl_name [PARTITION (partition_name,...)] [CHARACTER SET charset_name] [ROWS IDENTIFIED BY '<element-name>'] [IGNORE number {LINES | ROWS}] [(field_name_or_user_var,...)] [SET col_name = expr,...]

Paramètres

L'instruction LOAD XML FROM S3 utilise les paramètres obligatoires et facultatifs suivants. Vous trouverez plus de détails sur certains de ces paramètres dans la section LOADXMLStatement de la section Ma SQL documentation.

FILE | PREFIX

Indique si les données doivent être chargées à partir d'un seul fichier ou à partir de tous les fichiers qui correspondent à un préfixe donné. FILE est la valeur par défaut.

REPLACE | IGNORE

Détermine l'action à effectuer si une ligne d'entrée a les mêmes valeurs de clé uniques qu'une ligne existante dans la table de base de données.

  • Spécifiez REPLACE si vous souhaitez que la ligne d'entrée remplace la ligne existante dans la table.

  • Spécifiez IGNORE si vous voulez ignorer la ligne d'entrée. IGNORE est la valeur par défaut.

INTO TABLE

Identifie le nom de la table de base de données dans laquelle charger les lignes d'entrée.

PARTITION

Exige que toutes les lignes d'entrée soient insérées dans les partitions identifiées par la liste spécifiée de noms de partition séparés par des virgules. Si une ligne d'entrée ne peut pas être insérée dans l'une des partitions spécifiées, l'instruction échoue et une erreur est renvoyée.

CHARACTER SET

Identifie le jeu de caractères des données du fichier d'entrée.

ROWSIDENTIFIEDPAR

Identifie le nom d'élément qui identifie une ligne dans le fichier d'entrée. L’argument par défaut est <row>.

IGNORE number LINES | ROWS

Indique qu'un certain nombre de lignes au début du fichier d'entrée doivent être ignorées. Par exemple, vous pouvez IGNORE 1 LINES ignorer la première ligne du fichier texte ou IGNORE 2 ROWS les deux premières lignes de données de l'entréeXML.

field_name_or_user_var, ...

Spécifie une liste séparée par des virgules d'un ou plusieurs noms d'XMLéléments ou variables utilisateur qui identifient les éléments à charger par nom. Le nom d'une variable utilisateur utilisée à cette fin doit correspondre au nom d'un élément du XML fichier, préfixé par @. Vous pouvez utiliser les variables utilisateur pour stocker les valeurs de champ correspondantes pour une réutilisation ultérieure.

Par exemple, l'instruction suivante charge la première colonne du fichier d'entrée dans la première colonne de table1 et affecte à la colonne table_column2 dans table1 la valeur d'entrée de la deuxième colonne divisée par 100.

LOAD XML FROM S3 's3://amzn-s3-demo-bucket/data.xml' INTO TABLE table1 (column1, @var1) SET table_column2 = @var1/100;
SET

Spécifie la liste séparée par des virgules des opérations d'affectation qui attribuent aux colonnes de la table des valeurs non incluses dans le fichier d'entrée.

Par exemple, l'instruction suivante affecte aux deux premières colonnes de table1 les valeurs figurant dans les deux premières colonnes du fichier d'entrée, puis affecte à la colonne column3 dans table1 la valeur d'horodatage actuelle.

LOAD XML FROM S3 's3://amzn-s3-demo-bucket/data.xml' INTO TABLE table1 (column1, column2) SET column3 = CURRENT_TIMESTAMP;

Vous pouvez utiliser des sous-requêtes dans la partie droite des affectations SET. Pour une sous-requête qui renvoie une valeur devant être assignée à une colonne, vous pouvez utiliser uniquement une sous-requête scalaire. De plus, vous ne pouvez pas utiliser une sous-requête pour effectuer une sélection dans la table qui est en cours de chargement.