oracle批量插入数据
时间: 2023-10-17 21:19:35 浏览: 94
你可以使用以下方法来实现Oracle数据库的批量插入数据:
1. 使用INSERT ALL语句
INSERT ALL语句可以一次性插入多条数据,语法如下:
```
INSERT ALL
INTO table_name (col1, col2, col3) VALUES (val1_1, val2_1, val3_1)
INTO table_name (col1, col2, col3) VALUES (val1_2, val2_2, val3_2)
...
INTO table_name (col1, col2, col3) VALUES (val1_n, val2_n, val3_n)
SELECT 1 FROM DUAL;
```
其中,table_name为表名,col1, col2, col3为列名,val1_1, val2_1, val3_1为第一条数据的值,以此类推。
2. 使用INSERT INTO SELECT语句
INSERT INTO SELECT语句可以将一张表中的数据插入到另一张表中,语法如下:
```
INSERT INTO table_name (col1, col2, col3)
SELECT col1, col2, col3
FROM source_table_name;
```
其中,table_name为目标表名,source_table_name为源表名,col1, col2, col3为要插入的列名。
3. 使用PL/SQL语句
使用PL/SQL语句可以在Oracle数据库中实现更为复杂的批量插入逻辑,例如使用游标和循环等方式。以下是一个示例:
```
DECLARE
TYPE t_data IS TABLE OF table_name%ROWTYPE;
l_data t_data;
BEGIN
SELECT col1, col2, col3
BULK COLLECT INTO l_data
FROM source_table_name;
FORALL i IN 1..l_data.COUNT
INSERT INTO table_name (col1, col2, col3)
VALUES (l_data(i).col1, l_data(i).col2, l_data(i).col3);
END;
```
其中,table_name为目标表名,source_table_name为源表名,col1, col2, col3为要插入的列名。通过BULK COLLECT将数据集中到一个数组中,然后使用FORALL语句将数据一次性插入到目标表中。
阅读全文