oracle 批量插入
时间: 2023-07-04 10:24:21 浏览: 38
在 Oracle 中,可以使用以下两种方法进行批量插入:
1. 使用 INSERT ALL 语句
INSERT ALL 语句可以在一个 INSERT 语句中插入多行数据,可以大大提高插入数据的效率。其语法如下:
```
INSERT ALL
INTO table_name (column1, column2, column3) VALUES (value1, value2, value3)
INTO table_name (column1, column2, column3) VALUES (value4, value5, value6)
...
SELECT * FROM dual;
```
其中,table_name 是要插入数据的表名,column1、column2、column3 是表中的列名,value1、value2、value3 是要插入的值。可以多次使用 INTO 子句插入不同的行数据。
2. 使用 FORALL 语句
FORALL 语句可以一次性插入多行数据,可以比 INSERT ALL 语句更快。其语法如下:
```
DECLARE
TYPE t_table IS TABLE OF table_name%ROWTYPE;
v_data t_table;
BEGIN
v_data := t_table();
v_data.EXTEND(3); -- 插入 3 行数据
v_data(1).column1 := value1;
v_data(1).column2 := value2;
v_data(1).column3 := value3;
v_data(2).column1 := value4;
v_data(2).column2 := value5;
v_data(2).column3 := value6;
v_data(3).column1 := value7;
v_data(3).column2 := value8;
v_data(3).column3 := value9;
FORALL i IN 1..v_data.COUNT
INSERT INTO table_name VALUES v_data(i);
END;
```
其中,table_name 是要插入数据的表名,value1、value2、value3 是要插入的值。使用 TYPE 声明一个表类型,使用 v_data.EXTEND 扩展表大小,然后向表中赋值,最后使用 FORALL 语句一次性插入所有数据。