2016-12-01 93 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