Oracle的insert的批量插入语句

滴水恩情  金牌会员 | 2024-9-25 07:47:32 | 来自手机 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 897|帖子 897|积分 2691

在 Oracle 数据库中,不能直接使用类似于那种多行 VALUES 语法。

这种语法在某些其他数据库体系(如 MySQL、PostgreSQL)中是合法的,但不实用于 Oracle。
不支持:
  1. INSERT INTO
  2. [表名]([列名],[列名])
  3. VALUES
  4. ([列值],[列值])),
  5. ([列值],[列值])),
  6. ([列值],[列值]));
复制代码
但是,您可以使用以下几种方法来实现批量插入:
在 Oracle 中进行批量插入(Bulk Insert)可以通过多种方式实现,下面介绍几种常见的方法:

1. 使用 INSERT INTO ... SELECT 语句

这种方法实用于从一个表复制数据到另一个表,大概从查询结果中插入数据。
  1. INSERT INTO target_table (column1, column2, ...)
  2. SELECT column1, column2, ...
  3. FROM source_table
  4. WHERE condition;
复制代码

  • 示例
    1. INSERT INTO employees (id, name, salary)
    2. SELECT id, name, salary
    3. FROM temp_employees;
    复制代码
2. 使用 INSERT ALL 语句

INSERT ALL 允许一次性指定多个插入操作,每个操作可以插入到同一表中的不同行。
  1. INSERT ALL
  2. INTO target_table (column1, column2, ...) VALUES (value1, value2, ...)
  3. INTO target_table (column1, column2, ...) VALUES (value1, value2, ...)
  4. ...
  5. SELECT * FROM dual;
复制代码

  • 示例
    1. INSERT ALL
    2. INTO employees (id, name, salary) VALUES (1, 'Alice', 5000)
    3. INTO employees (id, name, salary) VALUES (2, 'Bob', 6000)
    4. INTO employees (id, name, salary) VALUES (3, 'Charlie', 5500)
    5. SELECT * FROM dual;
    复制代码
3. 使用 FORALL PL/SQL 语句(实用于大量数据)

FORALL 是 PL/SQL 的语句,用于实行高效的批量绑定插入操作。它通常与数组团结使用,可以在一个事件中插入多行数据。

  • 示例
    1. DECLARE
    2.   TYPE id_array IS TABLE OF employees.id%TYPE;
    3.   TYPE name_array IS TABLE OF employees.name%TYPE;
    4.   TYPE salary_array IS TABLE OF employees.salary%TYPE;
    5.   
    6.   ids id_array := id_array(1, 2, 3);
    7.   names name_array := name_array('Alice', 'Bob', 'Charlie');
    8.   salaries salary_array := salary_array(5000, 6000, 5500);
    9. BEGIN
    10.   FORALL i IN 1..ids.COUNT
    11.     INSERT INTO employees (id, name, salary)
    12.     VALUES (ids(i), names(i), salaries(i));
    13. END;
    复制代码
注意事项:


  • 在 Oracle 中,批量插入可以显著提高性能,特殊是在处理大量数据时。选择符合的方法取决于你的具体需求和数据量。
  • 使用 INSERT ALL 语句时,确保每个 INTO 子句都合法且满足目标表的约束条件。
  • 对于大规模数据插入,FORALL 在 PL/SQL 中通常是最有效的方式,因为它可以减少与数据库之间的通讯次数。
根据你的具体需求和数据情况,选择符合的方法来实行批量插入操作。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

滴水恩情

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表