我知道有很多批量插入脚本,因为我是 pl/sql 的新手,所以我很困惑。我有两个表 TABLEA(id,name,sirname,age) TABLEB(id,age),我想将所有数据从 TABLEB 迁移到 TABLEA。
我找到了一个链接http://psoug.org/reference/array_processing.html,其中“FORALL Insert”解释了如何做到这一点。但它假设两个表列类型相同。但就我而言,我将复制到 TABLEA 上的某些列。
由于 TABLEB 有 3000 万的记录,因此性能很重要。我想说的另一件事是 TABLEB 是外部表,我的意思是它是从 txt 文件将适当的列映射到表中创建的。
那么可以做些什么来为我的案例修改以下脚本。
CREATE TABLE servers2 AS
SELECT *
FROM servers
WHERE 1=2;
DECLARE
CURSOR s_cur IS
SELECT *
FROM servers;
TYPE fetch_array IS TABLE OF s_cur%ROWTYPE;
s_array fetch_array;
BEGIN
OPEN s_cur;
LOOP
FETCH s_cur BULK COLLECT INTO s_array LIMIT 1000;
FORALL i IN 1..s_array.COUNT
INSERT INTO servers2 VALUES s_array(i);
EXIT WHEN s_cur%NOTFOUND;
END LOOP;
CLOSE s_cur;
COMMIT;
END;