ORACLE里边BULK INSERT语法有么
ORACLE里面BULK INSERT语法有么?如何像SQL SERVER那样利用BULK INSERT那样大批量导入格式化文本文件呢?[解
ORACLE里面BULK INSERT语法有么?
如何像SQL SERVER那样利用BULK INSERT那样大批量导入格式化文本文件呢?
[解决办法]
用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接口数据库编程。
如果你用proc编程,组用好了,应该是效率很高的,比sqlldr不会慢多少。用OCI的话,里面有一种称为DPL技术,说白了就是sqlldr的API,效率也是很高的。V9以后的proc组插入,我猜可能统一到DPL了。
因为你这是一个自动流水线过程,建议你试试程序插入,这样好控制异常以及异常处理。
那其实很简单了,你写个C#程序判断下文件有没有生成,然后调用SQLLDR就可以了,它其实是一个批处理命令,就跟调用BAT一样的。
[解决办法]可以批量使用数据集。
BULK COLLECT INTO 查查这个用法,能不能满足你的要求。
[解决办法]要是用INSERT的话,可以考虑用并行、直接路径、NOLOGGING方式