欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

oracle里边bulk insert语法有么

更新时间: 2014-01-05 02:10:09 责任编辑: Author_N1

 

ORACLE里面BULK INSERT语法有么?
如何像SQL SERVER那样利用BULK INSERT那样大批量导入格式化文本文件呢?
--参考方法--
用sqlload吧。。。
Oracle 的SQL*LOADER可以将外部数据加载到数据库表中。下面是SQL*LOADER的基本特点:

1)能装入不同数据类型文件及多个数据文件的数据
2)可装入固定格式,自由定界以及可度长格式的数据
3)可以装入二进制,压缩十进制数据
4)一次可对多个表装入数据
5)连接多个物理记录装到一个记录中
6)对一单记录分解再装入到表中
7)可以用 数对制定列生成唯一的KEY
8)可对磁盘或 磁带数据文件装入制表中
9)提供装入错误报告
10)可以将文件中的整型字符串,自动转成压缩十进制并装入列表中。
--参考方法--
引用:
非常感谢。查了写资料看到有一个forall的出来,不过也是利用insert into ...组条插入,然后批量利用commit提交的,性能到底提升多少表示怀疑。

sqlload倒是一个不错的方法。这里我有一个疑问请教:我是利用一个自己开发的工具实现数据的导入的,因为其他系统过来的数据源源不断有产生,我需要把他缠身的数据随时监控随时导入ORACLE数据库。这样子的话我就需要调用sqlload来实现可控制的导入。不知道这个方案是否可行?

多谢指点。
Quote: 引用:

用sqlload吧。。。
Oracle 的SQL*LOADER可以将外部数据加载到数据库表中。下面是SQL*LOADER的基本特点:

1)能装入不同数据类型文件及多个数据文件的数据
2)可装入固定格式,自由定界以及可度长格式的数据
3)可以装入二进制,压缩十进制数据
4)一次可对多个表装入数据
5)连接多个物理记录装到一个记录中
6)对一单记录分解再装入到表中
7)可以用 数对制定列生成唯一的KEY
8)可对磁盘或 磁带数据文件装入制表中
9)提供装入错误报告
10)可以将文件中的整型字符串,自动转成压缩十进制并装入列表中。


那你问问题就没说明白。
你到底是要将文件批量 入进数据库。。
还是 入进数据库后,对这些数据二次加工批量处理到其他表?

这完全就是2回事了,文件入库,oracle提供了sqlload。
如果是表 对表的批量处理,oracle 有 bulk collect into批量处理语句
--参考方法--
如果你用proc编程,组用好了,应该是效率很高的,比sqlldr不会慢多少。用OCI的话,里面有一种称为DPL技术,说白了就是sqlldr的API,效率也是很高的。V9以后的proc组插入,我猜可能统一到DPL了。
因为你这是一个自动流水线过程,建议你试试程序插入,这样好控制异常以及异常处理。
--参考方法--
引用:
多谢,的确如此。我这里确实是一个流水线作业的过程。

其他系统生产格式化文本数据 ----->伺服进程负责监视格式化数据产生------>定时格式化导入目标数据库

这里我计划使用的是编写一个程序来监视目标文件,然后自动导入数据库。不过目前我使用的是ADO或者更给为使用OCI接口数据库编程。

Quote: 引用:

如果你用proc编程,组用好了,应该是效率很高的,比sqlldr不会慢多少。用OCI的话,里面有一种称为DPL技术,说白了就是sqlldr的API,效率也是很高的。V9以后的proc组插入,我猜可能统一到DPL了。
因为你这是一个自动流水线过程,建议你试试程序插入,这样好控制异常以及异常处理。


那其实很简单了,你写个C#程序判断下文件有没有生成,然后调用SQLLDR就可以了,它其实是一个批处理命令,就跟调用BAT一样的。
--参考方法--
可以批量使用数据集。
BULK COLLECT INTO  查查这个用法,能不能满足你的要求。
--参考方法--
要是用INSERT的话,可以考虑用并行、直接路径、NOLOGGING方式
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:10:09
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/6439/
本文WWW.DOC100.NET DOC100.NET版权所有。