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 の簡素化された構文は アプローチよりも効率的です。パフォーマンスを最適化するために、一度に挿入する行数が約 1,000 行を超えないようにすることをお勧めします。 INSERT ALL
以上がOracle で複数行の挿入を効率的に実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。