Contrairement à l'insertion multi-lignes à instruction unique MySQL, la base de données Oracle ne prend pas en charge cette méthode directe. Mais nous pouvons obtenir des fonctionnalités similaires de plusieurs manières :
Utiliser la syntaxe INSERT ALL (avant Oracle 23c)
Dans les versions antérieures à Oracle 23c, vous pouvez utiliser la syntaxe INSERT ALL
pour l'insertion multi-lignes. L'exemple suivant montre comment utiliser INSERT ALL
pour insérer des données dans la table TMP_DIM_EXCH_RT
:
<code class="language-sql">INSERT ALL INTO TMP_DIM_EXCH_RT (EXCH_WH_KEY, EXCH_NAT_KEY, EXCH_DATE, EXCH_RATE, FROM_CURCY_CD, TO_CURCY_CD, EXCH_EFF_DATE, EXCH_EFF_END_DATE, EXCH_LAST_UPDATED_DATE) VALUES (1, 1, '28-AUG-2008', 109.49, 'USD', 'JPY', '28-AUG-2008', '28-AUG-2008', '28-AUG-2008'), (2, 1, '28-AUG-2008', .54, 'USD', 'GBP', '28-AUG-2008', '28-AUG-2008', '28-AUG-2008'), (3, 1, '28-AUG-2008', 1.05, 'USD', 'CAD', '28-AUG-2008', '28-AUG-2008', '28-AUG-2008'), (4, 1, '28-AUG-2008', .68, 'USD', 'EUR', '28-AUG-2008', '28-AUG-2008', '28-AUG-2008'), (5, 1, '28-AUG-2008', 1.16, 'USD', 'AUD', '28-AUG-2008', '28-AUG-2008', '28-AUG-2008'), (6, 1, '28-AUG-2008', 7.81, 'USD', 'HKD', '28-AUG-2008', '28-AUG-2008', '28-AUG-2008') SELECT 1 FROM DUAL;</code>
Syntaxe simplifiée Oracle 23c
Oracle 23c introduit une syntaxe d'insertion multi-lignes simplifiée :
<code class="language-sql">INSERT INTO t(col1, col2, col3) VALUES ('val1_1', 'val1_2', 'val1_3'), ('val2_1', 'val2_2', 'val2_3'), ('val3_1', 'val3_2', 'val3_3');</code>
Cette syntaxe permet d'insérer plusieurs lignes à l'aide d'une seule instruction.
Considérations relatives aux performances
Pour les grands ensembles de données, la syntaxe simplifiée d'Oracle 23c est plus efficace que l'approche INSERT ALL
. Afin d'optimiser les performances, il est recommandé que le nombre de lignes insérées à la fois ne dépasse pas environ 1 000 lignes.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!