與MySQL單語句多行插入不同,Oracle資料庫不支援這種直接方式。 但我們可以透過幾種方法實現類似功能:
使用INSERT ALL語法 (Oracle 23c之前版本)
在Oracle 23c之前的版本中,可以使用INSERT ALL
語法進行多行插入。以下範例示範如何使用INSERT ALL
將資料插入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>
Oracle 23c 簡化語法
Oracle 23c 引入了一個簡化的多行插入語法:
<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>
此語法允許使用單一語句插入多行。
性能考量
對於大型資料集,Oracle 23c 的簡化語法比INSERT ALL
方法更有效率。為了優化性能,建議每次插入的行數不要超過1000行左右。
以上是Oracle中如何有效率地執行多行插入?的詳細內容。更多資訊請關注PHP中文網其他相關文章!