2014-12-03 112 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