批量 SQL 插入失败
Batch SQL Insert is Failing
我正在尝试按如下方式执行批量插入:
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
然而它总是失败。有人可以帮我解决为什么吗?
谢谢!
如果你使用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;
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
问题是:Oracle 不支持批量插入语法,就像它在 MySQL 中的实现一样。
您可以通过多种方式实现目标。 (但我不得不承认 MySQL 批量插入语法样式在 ODBMS 中会很好。)
旁边提到的"union all select from dual"你可以看看:
使用 SQL*Loader 从 CSV 文件加载它。如果你真的想添加很多条目,我建议这样做。
为了加快单次写入插入语句的速度,请使用 "commit write batch",以便 Oracle 将批量写入语句。
(如果你还想减少 copied/written "INSERT INTO cellphone VALUES" 代码的数量,你可以编写一个 PL/SQL 过程,这样你只需要复制过程的调用。)
这里有很多关于 SQL*Loader、PL/SQL 和程序的很好的教程,如果您仍有问题,请随时提出。如果需要,我可以添加代码示例。
我正在尝试按如下方式执行批量插入:
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
然而它总是失败。有人可以帮我解决为什么吗? 谢谢!
如果你使用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;
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
问题是:Oracle 不支持批量插入语法,就像它在 MySQL 中的实现一样。
您可以通过多种方式实现目标。 (但我不得不承认 MySQL 批量插入语法样式在 ODBMS 中会很好。)
旁边提到的"union all select from dual"你可以看看:
使用 SQL*Loader 从 CSV 文件加载它。如果你真的想添加很多条目,我建议这样做。
为了加快单次写入插入语句的速度,请使用 "commit write batch",以便 Oracle 将批量写入语句。 (如果你还想减少 copied/written "INSERT INTO cellphone VALUES" 代码的数量,你可以编写一个 PL/SQL 过程,这样你只需要复制过程的调用。)
这里有很多关于 SQL*Loader、PL/SQL 和程序的很好的教程,如果您仍有问题,请随时提出。如果需要,我可以添加代码示例。