批量SQL插入失败

时间:2015-03-05 15:10:14

标签: sql oracle insert

我正在尝试执行批量插入,如下所示:

SQL> INSERT INTO Z (q, w, e, r) 
VALUES
('7', 'A', '3', 'A'),
('8', 'B', '4', 'An'),
('9', 'C', '5', 'And');

                           *
ERROR at line 1:
ORA-00933: SQL command not properly ended

然而它一直都在失败。有人可以帮我解释原因吗? 谢谢!

3 个答案:

答案 0 :(得分:0)

如果您使用insert . . . select

,则可以使用一个语句执行此操作
INSERT INTO cellphone (phone_id, model, data, os) 
    SELECT '99997', 'Galaxy S IV', '4g', 'Android' FROM DUAL UNION ALL
    SELECT '99998', 'Galaxy S V', '4g', 'Android' FROM DUAL UNION ALL
    SELECT '99999', 'Galaxy S VI', '4g', 'Android' FROM DUAL;

答案 1 :(得分:0)

INSERT INTO cellphone (phone_id, model, data, os) 
select '99997', 'Galaxy S IV', '4g', 'Android' from dual
union all select '99998', 'Galaxy S V', '4g', 'Android' from dual

答案 2 :(得分:0)

问题是:Oracle不像MySQL中的实现那样支持批量插入语法。

Ther是您实现目标的几种方式。 (但我必须承认MySQL批量插入语法样式在ODBMS中会很好。)

除了被修改的“工会全部选择双重”之外,你可以看一下:

使用CSV文件中的SQL * Loader加载它。如果你真的想添加很多东西我建议这个。

使用单一写入加速插入插入语句使用“提交写入批处理”,以便Oracle将批量写入语句。 (如果您还想减少复制/写入“INSERT INTO手机VALUES”代码的数量,您可以编写PL / SQL程序,这样您只需要复制程序的调用。)

如果您仍然有问题,请随时提出SQL * Loader,PL / SQL和过程的优秀教程。如果需要,我可以添加代码示例。