批量数据插入是数据库操作中常见的需求,特别是在处理大量数据时,如何高效地实现批量数据插入是每个数据库管理员和开发者都需要掌握的技能。本文将详细介绍Oracle SQL中实现批量数据插入的各种技巧,包括使用INSERT INTO VALUES语句、批量插入、使用子查询插入以及使用INSERT INTO SELECT语句等。

1. 插入单条记录到已有表格

1.1 INSERT INTO 语句基本用法:

INSERT INTO tablename (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);

示例:

INSERT INTO employees (id, name, salary, department)
VALUES (1, 'king', 50000, 'IT');

这种方法的优点是简单直观,适用于插入单条记录。

2. 批量插入数据

当需要一次性插入多条记录时,可以使用以下几种方法:

2.1 使用 VALUES 子句插入多条记录

INSERT INTO employees (id, name, salary, department)
VALUES
(2, 'zs', 60000, 'HR'),
(3, 'ls', 55000, 'Finance'),
(4, 'ww', 58000, 'Marketing');

2.2 利用循环插入

BEGIN
  FOR i IN 1 .. 100 LOOP
    INSERT INTO test(xh, mc) VALUES (i, '测试');
  END LOOP;
END;

这种方法适用于批量生成测试数据。

3. 使用子查询插入

如果要插入的数据源已经存储于数据库对象中,可以使用子查询来实现批量插入。

INSERT INTO test (xh, mx)
SELECT '123', '测试' FROM dual;

这里使用dual作为数据源,它是Oracle的一个虚表,通常用于返回单行数据。

4. 使用INSERT INTO SELECT语句

这是最常用的批量数据插入方法之一,尤其适用于从一个表中选择数据插入到另一个表中。

INSERT INTO target_table (column1, column2, column3, ...)
SELECT column1, column2, column3, ...
FROM source_table;

这种方法在数据转换和迁移过程中非常有用。

5. 使用PL/SQL和SQL*Loader

对于非常大的数据集,可以使用PL/SQL或SQL*Loader来导入数据。

5.1 使用PL/SQL

CREATE OR REPLACE PROCEDURE pinsert IS
  num NUMBER;
BEGIN
  FOR i IN 1..10000000 LOOP
    INSERT INTO USERINFO (ID, NAME, AGE, ADDRESS, OCCUPATIONNAME) VALUES (1, 'ouhy', 25, '广东省佛山市南海区XXXX公司', '测试工程师');
    num := num + 1;
    IF MOD(num, 5000) = 0 THEN
      COMMIT;
    END IF;
  END LOOP;
END;

5.2 使用SQL*Loader

LOAD DATA
INFILE 'data.txt'
INTO TABLE employees
FIELDS TERMINATED BY ','
(ID, name, salary, department);

这种方法适用于从文本文件或其他数据源导入大量数据。

总结

通过以上方法,我们可以轻松地在Oracle SQL中实现批量数据插入。选择合适的方法取决于具体的应用场景和数据量。熟练掌握这些技巧将有助于提高数据库操作效率,减少数据处理时间。