2014-12-03 38 views
2
INSERT ALL 
INTO t (col1, col2, col3) VALUES ('val1_1', 'val1_2', 'val1_3') 
INTO t (col1, col2, col3) VALUES ('val1_1', 'val1_2', 'val1_3') 
....... 
INTO t (col1, col2, col3) VALUES ('val1_1', 'val1_2', 'val1_3') 
SELECT * FROM DUAL; 

我正在使用此语句将多行插入表中。ORACLE的多插入是否有限制?

有时我插入正确,即使我给它几条线。我甚至插入了10100行!

但有时,它说这个

ORA-24335: cannot support more than 1000 columns 

任何想法?

+0

我使用了“oracle多插入限制”......找不到这种插入的任何限制 – Mouhcine 2014-12-03 00:21:03

+0

您是否谷歌错误? http://stackoverflow.com/a/8062870/1394393(根据我的经验,Oracle确实模糊了你所拥有的问题。) – jpmc26 2014-12-03 00:23:08

+0

你提到你插入了10,100行**,但是你得到的ORA是关于**列** – benji 2014-12-03 02:38:08

回答

3

是的,是有一定限度:

https://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_9014.htm

对多表插入
多表插入限制受到以下限制:
...
- 在一个多表插入,所有的insert_into_clause s不能组合以指定超过999个目标列。
...

你将在一个表中,因此它可以在没有多表插入完成。例如,通过使用UNION ALL:

insert into t (col1, col2, col3) 
select 'val1_1', 'val1_2', 'val1_3' from dual 
union all 
select 'val1_1', 'val1_2', 'val1_3' from dual 
... 
+2

插入单个表格时,限制似乎不适用。至少在11g中,我总共插入了10K列,没有问题。 – yktoo 2016-06-07 12:20:51

-1

我试图插入50.000行有一个插入的所有语句,但我的编辑器(Oracle SQL Developer中)无法处理它。我没有得到任何错误,但几秒钟后它没有回应。然后我尝试从500开始插入更少的行。将近5000行的一行插入所有语句,我的编辑器再次失败。我也没有看到任何文件限制。然后我尝试了另一种插入大量行的方法。我将整个50.000行语句拆分为1000行“插入所有”语句(使用小型宏脚本)。所有插入成功完成,总执行时间合理。

与插入所有语句相比,sql loader确实会为插入太多的行带来更好的结果。

+0

发布这是一个单独的问题 – 2018-01-31 13:35:39