OCI编程高级篇(十二) 直接路径装载概念和步骤

Oracle直接路径装载是插入数据最快的方式,这些OCI函数能让你访问Oracle的直接路径装载引擎,让客户端输入的数据直接转换成数据库表中的存储格式,直接写入到数据块中。借用Oracle OCI文档中的一张图片,看一下直接路径装载的过程。

 直接路径装载的环节很多,我们一步步来看都是怎样操作的。

1. 创建环境变量,连接到数据库,这一步我们前面已经介绍过了。

2. 分配直接路径上下文句柄。使用OCIHandleAlloc()函数,以环境句柄为父句柄,句柄类型为OCI_HTYPE_DIRPATH_CTX。

3. 设置直接路径上下文的属性,使用OCIAttrSet()函数,设置的属性有装载表的属主OCI_ATTR_SCHEMA_NAME,装载表的名称OCI_ATTR_NAME,如果是装载分区,设置分区名称OCI_ATTR_SUB_NAME,如果不想写日志,设置OCI_ATTR_DIRPATH_NOLOG属性,设置输入缓冲区的大小OCI_ATTR_BUF_SIZE。

4. 设置表的字段属性。使用OCIAttrSet()函数设置装载表的字段个数OCI_ATTR_NUM_COLS,使用OCIAttrGet()函数从直接路径上下文中得到参数OCI_ATTR_LIST_COLUMNS。然后循环遍历每个字段,使用OCIParamGet()函数得到字段描述符,在字段描述符中用OCIAttrSet()函数设置字段名称,字段类型和字段数据最大长度。

5. 准备直接路径装载接口,使用OCIDirPathPrepare()函数。

6. 分配直接路径装载的字段数组句柄,使用OCIHandleAlloc()函数,类型为OCI_HTYPE_DIRPATH_COLUMN_ARRAY。

7. 分配直接路径装载流句柄,使用OCIHandleAlloc()函数,类型为OCI_HTYPE_DIRPATH_STREAM。

8. 获得直接路径装载字段数组句柄中的最大行数和字段个数,使用OCIAttrGet()函数,属性名称分别为OCI_ATTR_NUM_ROWS和OCI_ATTR_NUM_COLS。

9. 为每个字段设置输入数据入口,使用OCIDirPathColArrayEntrySet()函数。

10. 清除字段数组缓冲区,为新数据做准备,使用OCIDirPathColArrayReset()函数。

11. 清除直接路径装载流缓冲区,为新数据做准备,使用OCIDirPathStreamReset()函数。

12. 把字段缓冲区中的数据转换成流数据,使用OCIDirPathColArrayToStream()函数。

13. 装载流数据,使用OCIDirPathLoadStream()函数。

14. 结束直接路径装载,使用OCIDirPathFinish()函数。

15. 释放前面分配的句柄。

整个过程很复杂,在接下来的几节中,我们分别介绍这些函数,并用实际的例子演示函数的用法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值