【发布时间】:2018-03-26 07:43:16
【问题描述】:
我习惯使用 T-SQL,但目前我正在使用 PL/SQL 进行项目,因此语法有时会有点不同。
现在,我正在尝试在数据库中插入大约 5000 条记录。这将通过 12 个不同的连接发生。 (我有 12 个 XML 不同的 XML 文件,我想在相应的表中插入每个 XML 的所有数据)
我的第一个想法是为每个插入生成一个新的 INSERT INTO 查询,但我猜这会带来一些真正的性能问题。
接下来我读到了INSERT ALL INTO <table_name>,但我不确定这是否能解决性能问题?
最后,我读到FORALL 会在执行批量插入时显着提高速度。 (http://www.dba-oracle.com/oracle_news/news_plsql_forall_performance_insert.htm)
不幸的是,由于我的 PLSQL 知识还不是很好,所以我不知道如何解决这个问题。
我想做一些事情:
FORALL i IN 1..10
INSERT INTO DELETEME (ID, NAME) VALUES (i, 'name' + i);
这是我的表结构:
ID NUMBER(10,0)
NAME VARCHAR2(255 BYTE)
这就是我得到的:
Error starting at line : 2 in command -
INSERT INTO DELETEME (ID, NAME) VALUES (i, 'name' + i)
Error at Command Line : 2 Column : 61
Error report -
SQL Error: ORA-00984: column not allowed here
00984. 00000 - "column not allowed here"
*Cause:
*Action:
使用 FORALL 批量插入最简单的方法是什么? 或者你们知道有什么好的选择吗?
【问题讨论】: