Chargement de données dans un cluster de base de données Amazon Aurora MySQL à partir de fichiers texte stockés 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 de base de données Amazon Aurora MySQL à partir de fichiers texte stockés 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.

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

Pour pouvoir charger des données à partir d'un compartiment Amazon S3, vous devez d'abord octroyer à votre cluster de base de données Aurora MySQL une autorisation d'accès à Amazon S3.

Pour octroyer à Aurora MySQL un accès à Amazon S3
  1. Créez une stratégie AWS Identity and Access Management (IAM) pour fournir les autorisations de compartiment et d'objet permettant à votre cluster de base de données Aurora MySQL d'accéder à Amazon S3. Pour obtenir des instructions, consultez Création d'une stratégie IAM pour accéder aux ressources Amazon S3.

    Note

    Dans Aurora MySQL 3.05 et versions ultérieures, vous pouvez charger des objets chiffrés à l'aide de AWS KMS keys gérées par le client. Pour ce faire, incluez l'autorisation kms:Decrypt dans votre politique IAM. Pour plus d'informations, consultez 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 de Clés gérées par AWS ou de clés gérées par Amazon S3 (SSE-S3).

  2. Créez un rôle IAM et attachez la politique IAM que vous avez créée dans Création d'une stratégie IAM pour accéder aux ressources Amazon S3 au nouveau rôle IAM. 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.

  4. Pour Aurora MySQL version 2, définissez le paramètre de cluster de base de données aurora_load_from_s3_role ou aws_default_s3_role en spécifiant l'Amazon Resource Name (ARN) du nouveau rôle IAM. Si un rôle IAM n'est pas spécifié pour aurora_load_from_s3_role, Aurora utilise le rôle IAM spécifié dans aws_default_s3_role.

    Pour Aurora MySQL version 3, utilisez aws_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 autoriser les utilisateurs de base de données d'un cluster de base de données Aurora MySQL à accéder à Amazon S3, associez le rôle que vous avez créé dans 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 rôle IAM à un cluster de base de données, consultez Association d'un rôle IAM à un cluster de bases de données Amazon Aurora MySQL.

  6. Configurez votre cluster de base de données Aurora MySQL de façon à autoriser les connexions sortantes vers Amazon S3. Pour obtenir des instructions, consultez Activation de la communication réseau entre Amazon Aurora MySQL et d'autres services AWS.

    Si votre cluster de base de données n'est pas accessible publiquement et ne se trouve pas dans un sous-réseau public VPC, 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.

Accord de privilèges permettant de charger des données dans Amazon Aurora MySQL

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 MySQL version 3, vous accordez le rôle AWS_LOAD_S3_ACCESS. Dans Aurora MySQL version 2, vous accordez le privilège LOAD FROM S3. 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 MySQL version 3 :

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

Lorsque vous utilisez la technique de rôle dans Aurora MySQL version 3, vous pouvez également activer le rôle en utilisant l'instruction SET ROLE role_name ou SET ROLE ALL. Si vous n'êtes pas familier avec le système de rôles MySQL 8.0, vous pouvez en apprendre davantage dans Modèle de privilège basé sur les rôles. Pour plus de détails, consultez Utilisation des rôles (langue française non garantie) dans le Manuel de référence de MySQL.

Cela s'applique uniquement à la session active en cours. Lorsque vous vous reconnectez, vous devez à nouveau exécuter l'instruction SET ROLE pour accorder des privilèges. Pour plus d'informations, consultez SET ROLE statement dans le manuel MySQL Reference Manual.

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, vous n'avez pas besoin d'appeler explicitement l'instruction SET ROLE pour activer un rôle. Pour plus d'informations, consultez activate_all_roles_on_login dans le manuel MySQL Reference Manual.

Utilisez l'instruction suivante pour Aurora MySQL version 2 :

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

Le rôle AWS_LOAD_S3_ACCESS et le privilège LOAD FROM S3 sont propres à Amazon Aurora et ne sont pas disponibles pour les bases de données MySQL externes ni les instances de base de données RDS for MySQL. Si vous avez configuré la réplication entre un cluster de base de données Aurora faisant office de maître de réplication et une base de données MySQL faisant office de client de réplication, l'instruction GRANT pour le rôle ou le 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 instance de base de données RDS for MySQL, utilisez la procédure mysql_rds_skip_repl_error. Pour ignorer l'erreur sur une base de données MySQL externe, utilisez la variable système slave_skip_errors (Aurora MySQL version 2) ou la variable système replica_skip_errors (Aurora MySQL version 3).

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

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

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

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

  • region (facultatif) – Région AWS qui contient le compartiment Amazon S3 à partir duquel effectuer le chargement. Ce champ est facultatif. 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 – Nom du fichier XML ou du fichier texte Amazon S3, ou préfixe qui identifie un ou plusieurs fichiers XML ou texte à 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 l'URI des fichiers dans un compartiment S3
  1. Connectez-vous à la AWS Management Console et ouvrez la console Amazon S3 à l'adresse https://console.aws.amazon.com/s3/.

  2. Dans le volet de navigation, choisissez Compartiments, puis choisissez le compartiment dont vous souhaitez copier l'URI.

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

  4. Choisissez Copier l'URI S3.

LOAD DATA FROM S3

Vous pouvez utiliser l'instruction LOAD DATA FROM S3 pour charger des données à partir de n'importe quel format de fichier texte pris en charge par l'instruction MySQL LOAD DATA INFILE, tel que 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 de base de données Aurora MySQL autorise les connexions sortantes vers S3. Pour plus d'informations, consultez Activation de la communication réseau entre Amazon Aurora MySQL et d'autres services AWS.

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 MySQL 3.05 et versions supérieures, le mot-clé FROM est facultatif.

Paramètres

L'instruction LOAD DATA FROM S3 utilise les paramètres obligatoires et facultatifs suivants. Pour plus d'informations sur certains de ces paramètres, consultez Instruction LOAD DATA dans la documentation sur MySQL.

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 l'URI pour un fichier texte ou manifeste à charger, ou un préfixe Amazon S3 à utiliser. Spécifiez l'URI grâce à la syntaxe décrite dans Spécification du chemin (URI) à 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 nombre 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://mybucket/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://mybucket/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'instruction LOAD DATA FROM S3 avec le mot-clé MANIFEST pour spécifier un fichier manifeste au format JSON qui répertorie les fichiers texte à charger dans une table de votre cluster de base de données.

Le schéma JSON 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 du manifeste doit spécifier une URL avec le nom de compartiment et le chemin d'objet complet du fichier, 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 une région n'est pas spécifiée dans l'URL, 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 qui ont été chargés à partir d'une seule itération de l'instruction, utilisez la clause WHERE pour filtrer les enregistrements sur l'URI Amazon S3 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

L'URI spécifié dans l'instruction load. Cet URI peut correspondre à l'un 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

Le nom d'un fichier qui a été chargé dans Aurora à partir d'Amazon S3 en utilisant l'URI identifiée dans le champ load_prefix.

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 du fichier customerdata.txt qui se trouve dans le compartiment dbbucket d'Amazon S3, puis charge les données dans la table store-schema.customer-table.

LOAD DATA FROM S3 's3://dbbucket/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és par des virgules de tous les fichiers qui correspondent au préfixe d'objet employee-data dans le compartiment my-data d'Amazon S3 de la région us-west-2, puis charge les données dans la table employees.

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

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

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

LOAD XML FROM S3

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

  • 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. Pour plus d'informations sur certains de ces paramètres, consultez Instruction LOAD XML dans la documentation sur MySQL.

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.

ROWS IDENTIFIED BY

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

IGNORE nombre 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é la première ligne dans le fichier texte, ou IGNORE 2 ROWS pour laisser de côté les deux premières lignes de données dans le fichier XML d'entrée.

field_name_or_user_var, ...

Spécifie la liste séparée par des virgules d'un ou plusieurs noms d'élément XML ou de variables utilisateur qui identifient les éléments à charger par nom. Le nom d'une variable utilisateur utilisé à cette fin doit correspondre au nom d'un élément dans le fichier XML, 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://mybucket/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://mybucket/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.