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.
MERGE INTO
Mise à jour, suppression ou insertion conditionnelle de lignes dans une table Apache Iceberg. Une seule instruction peut combiner des actions de mise à jour, de suppression et d'insertion.
Note
MERGE INTO
est transactionnel et n'est pris en charge que pour les tables Apache Iceberg dans la version 3 du moteur Athena.
Résumé
Pour mettre à jour, supprimer ou insérer de manière conditionnelle des lignes d'une table Iceberg, utilisez la syntaxe suivante.
MERGE INTO target_table [ [ AS ] target_alias ]
USING { source_table | query } [ [ AS ] source_alias ]
ON search_condition
when_clause
[...]
La clause when_clause
est l'une des suivantes :
WHEN MATCHED [ AND condition ] THEN DELETE
WHEN MATCHED [ AND condition ] THEN UPDATE SET ( column = expression [, ...] )
WHEN NOT MATCHED [ AND condition ] THEN INSERT (
column_name
[,column_name
...]) VALUES (expression, ...)
MERGE
prend en charge un nombre arbitraire de clauses WHEN
avec des conditions MATCHED
différentes. Les clauses de condition exécutent l'opération DELETE
, UPDATE
ou INSERT
dans la première clause WHEN
sélectionnée par l'état MATCHED
et la condition de correspondance.
Pour chaque ligne source, les clauses WHEN
sont traitées dans l'ordre. Seule la première clause WHEN
correspondante est exécutée. Les clauses suivantes sont ignorées. Une erreur utilisateur est signalée lorsqu'une seule ligne de la table cible correspond à plus d'une ligne source.
Si une ligne source ne correspond à aucune clause WHEN
et qu'il n'y a pas de clause WHEN NOT MATCHED
, la ligne source est ignorée.
Dans les clauses WHEN
qui comportent des opérations UPDATE
, les expressions de valeur de colonne peuvent renvoyer à n'importe quel champ de la cible ou de la source. Dans le cas de NOT
MATCHED
, les expressions INSERT
peuvent renvoyer à n'importe quel champ de la source.
Exemple
L'exemple suivant fusionne les lignes de la deuxième table dans la première table si elles n'existent pas dans la première table. Notez que les colonnes répertoriées dans la clause VALUES
doivent être préfixées par l'alias de la table source. Les colonnes cibles répertoriées dans la clause INSERT
ne doivent pas être préfixées.
MERGE INTO iceberg_table_sample as ice1 USING iceberg2_table_sample as ice2 ON ice1.col1 = ice2.col1 WHEN NOT MATCHED THEN INSERT (col1) VALUES (ice2.col1)
Pour obtenir plus d'exemples MERGE INTO
, consultez Mettre à jour les données de la table Iceberg.