Oracle数据库高效批量插入数据方法
将多行数据插入Oracle数据库有多种方法。MySQL中常用的批量插入方法在Oracle中并不直接支持。
使用INSERT ALL语句
在Oracle中,可以使用INSERT ALL
语句进行批量插入。该语句包含多个INTO
子句,每个子句代表一行要插入的数据。语句以SELECT 1 FROM DUAL
结尾,作为插入结束的标志。
<code class="language-sql">INSERT ALL INTO t (col1, col2, col3) VALUES ('val1_1', 'val1_2', 'val1_3') INTO t (col1, col2, col3) VALUES ('val2_1', 'val2_2', 'val2_3') INTO t (col1, col2, col3) VALUES ('val3_1', 'val3_2', 'val3_3') . . . SELECT 1 FROM DUAL;</code>
Oracle 23c 简化语法
Oracle 23c 引入了一种简化的批量插入语法,无需使用INSERT ALL
语句。可以使用逗号分隔的列表插入多行数据,如下所示:
<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语法比INSERT ALL
快得多,与UNION ALL
方法的性能相当。但是,一次插入超过大约1000行数据会导致解析时间呈指数级增长。
以上是如何高效地将多行插入Oracle数据库?的详细内容。更多信息请关注PHP中文网其他相关文章!