2016-12-01 90 views
2

我在很多地方看到的一個好方法,在Oracle中插入幾行如下:插入多行

INSERT INTO mytable ("id", "name") VALUES ('val1', 'val2'); 
INSERT INTO mytable ("id", "name") VALUES ('aa', 'cc'); 
INSERT INTO mytable ("id", "name") VALUES ('ww', 'dd'); 

但是,在很多行的批量插入的情況下,這應該考慮到我們正在執行分離的查詢,請保持高性能?在這些多重查詢(網絡,解析......)的情況下,經典的開銷問題呢?

預先感謝您!

回答

1

這確實是插入到表中的低效方法。你說明確切的聲明可能與

INSERT INTO mytable ("id", "name") 
    select 'val1', 'val2' from dual union all 
    select 'aa' , 'cc' from dual union all 
    select 'ww' , 'dd' from dual 
; 

當然被替換,如果你的表中有兩個以上的列,其他列將null(或列的默認值,如果是這樣定義)。

更妙的是,你要插入的值已經在某種形式的表 - 那麼你可以使用一個SELECT語句,也許WHERE條件,加入等

2

您可以使用INSERT ALL INTODocumentation)。

INSERT ALL 
    INTO mytable ("id", "name") VALUES ('val1', 'val2') 
    INTO mytable ("id", "name") VALUES ('aa', 'cc') 
    INTO mytable ("id", "name") VALUES ('aa', 'cc') 
SELECT 1 FROM DUAL; 
+0

當然,但沒有回答我的問題!但是,謝謝! – Alex

0

您可以插入一個選擇,如果你在某個SQL對象中已經有了dada,但是當存在需要插入很多信息時,我們可以使用另一種方法如發送txt文件並進行批量插入,此時有10萬行純文本(2016)isn沒有太多的旅行1GB網絡沒有問題。

檢查:

Use a Format File to Bulk Import Data (SQL Server)

Bulk Import and Export of Data (SQL Server)

選擇插入的舉例:

Insert into Table 
select id, column1, column2 from tempTable 

它比 都快成MYTABLE( 「ID」, 「姓名」)VALUES( 'val1','val2') INTO mytable(「id」,「name」)VALUES('aa','cc') INTO mytable(「id」,「name」)VALUES('aa','cc')

NOTE !!!!!!

SORRY !!!你問關於ORACLE ...我可能是這樣的ORACLE