在oracle怎样同时插入1000000条数据,效率要快

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在oracle怎样同时插入1000000条数据,效率要快相关的知识,希望对你有一定的参考价值。

如果是数据导入,可以使用自导自带的导入工具imp 注意,根据你机器的性能,要调整commit的条数,就是多少条记录commit一次。这个数据对速度影响很大,插入之前最好能做个测试。希望对你有所帮助。 参考技术A 如果是要做测试数据的话:
1、创建一个临时表A
2、往A中插入10条数据
3、用insert /*+append*/ ... select 的方式往目标表中插入数据,对表A自关联6次。如下:

insert /*+append*/ ...
select ..
from a,a,a,a,a,a;

这种完全自关联,会产生10的6次方条数据。
参考技术B 你的数据是导出的备份文件还是在库中的一个表?

建议使用insert 和copy。使用insert 时建议分批插入分批提交。
参考技术C 你可以根据你机器的性能,采取分批插入的方式,比如每次提交100000条!

关于oracle in 的1000条限制

最近做一个查询报表,查询条件是从excel文档中导出读取的,但是文档中的数据超过1000条就报错,后来在网上查询说将可以将数据放到临时表中,但是批量添加到临时表不是又要用到in么..求问这个问题如何解决..

答:Oracle中插入1000条数据和10000条数据效率并没有什麼区别,它们都遵循的同一规则插入。几个提高Oracle插入数据效率的方法:删除Index,插入数据後重新建Index在nologging的模式下插入parallel方式并行插入追问

我需要从excel文档中的数据导入到临时表中.怎么批量添加进去呢.excel中的数据,读取保存在一个变量中.

参考技术A

不会啊,6500条都没报错,你1000的怎么会,是不是其他地方不对

追问

因为我的语句中,in后面跟的是值,而不是一个select语句...in里面的数据是从excel文档中读取出来的

追答

那你先把excel中in的值放到一个表里的某一列里面,在用SQL语句替换不就行了

追问

我想把in里面的值放到一个临时表中,但是怎么把这些值批量添加到临时表中呢(我知道用in可以批量添加进去,但in又有限制............)

追答

你的in的值是行X X X X X 还是
列X
X
X
数据应该是在EXCEL中吧。
如果是列的话,用PL/SQL中的ODBC导入器,导一列就行了;行的话换成列的形式在导入

追问

但是不能借用第三方软件呀导入啊..需求是,在网站里面上传excel文档,点击查询,将数据显示出来. 当点击查询按钮时,读取上传的excel文档中数据,并将数据作为条件在数据库查询将结果显示出来...

追答

看你最后的那条回复,你点击查询以后,数据应该已经录入到数据库里面了,为什么还不能直接调用中一列,放入子查询中?

追问

excel中的数据只是条件数据(可以理解为一个产品的ID吧),需要根据这些条件从数据库取数据,但是由于in的1000限制,所以想把这ID放到临时表中..从excel文档中读取的数据是保存在一个变量中.像这样 '1,2,3,4,5,6,7..',但这样的数据,怎么添加到数据库中呢...

以上是关于在oracle怎样同时插入1000000条数据,效率要快的主要内容,如果未能解决你的问题,请参考以下文章

mssql 里面存储过程插入了条数据之后的返回

oracle存储过程效率问题,处理1500w的数据插入

informix/oracle rowid 问题

关于oracle in 的1000条限制

Oracle 快速插入1000万条数据的实现方式

将数据插入oracle sql live [重复]