LOB数据管理--以文件的形式加载LOB数据

由于LOB数据的特殊性,在加载LOB数据时我们必须采用一些特殊手段,
不能像平常的SQL操作, oracle给我们提供了dbms_lob包专门用来操作lob数据[@more@]

在加载LOB数据之前呢 我们必须了解LOB locator的概念,lob locator指的是一个lob定位器
(LOB的内部存储机制决定),相当于指针, 表示插入LOB数据的位置,那么在插入数据前呢必须要
知道lob locator然后将数据插入到lob locator指定的位置.加载LOB数据的方式有两种一是
internal lob方式。通过SQL DML语句将lob数据同其他数据一快插入.平常的应用(java/c#)都喜欢用这种方式;另一种是external lob方式,用dbms_lob或OCI等以文件的形式将数据插入数据库.我试验的就是external lob的数据加载形式

export ORACLE_SID=rac1
[oracle@rac1 ~]$ sqlplus mayp/mayp

SQL*Plus: Release 10.1.0.5.0 - Production on Sun Jul 29 22:01:19 2007

Copyright (c) 1982, 2005, Oracle. All rights reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.1.0.5.0 - Production
With the Partitioning, Real Application Clusters, OLAP and Data Mining options

SQL> desc lob_test
Name Null? Type
----------------------------------------- -------- ----------------------------
NAME VARCHAR2(100)
IMAGE BLOB
NOTE CLOB

SQL> create directory mydump as '/u01/app/oracle/ora';

Directory created.

SQL> DECLARE
p_image_file BFILE;
p_note_file BFILE;
p_image BLOB;
p_note CLOB;
BEGIN
INSERT INTO lob_test
(name, image, note)
VALUES
('i test lob data', EMPTY_BLOB(), EMPTY_CLOB())
RETURNING image, note INTO p_image, p_note;
p_image_file := BFILENAME('MYDUMP', 'Blue.jpg');
p_note_file := BFILENAME('MYDUMP', 'readme.txt');
DBMS_LOB.FILEOPEN(p_image_file);
DBMS_LOB.FILEOPEN(p_note_file);
DBMS_LOB.LOADFROMFILE(p_image,
p_image_file,
DBMS_LOB.GETLENGTH(p_image_file));
DBMS_LOB.LOADFROMFILE(p_note,
p_note_file,
DBMS_LOB.GETLENGTH(p_note_file));
DBMS_LOB.FILECLOSE(p_image_file);
DBMS_LOB.FILECLOSE(p_note_file);
COMMIT;
END;
/ 2 3 4 5 6 7 8 9 10 11 12 13

PL/SQL procedure successfully completed.

SQL> select count(*) from lob_test;

COUNT(*)
----------
1

表里面已经有一条记录了,我么可以通过pl/sql察看blog和clob:

resserver.php?blogId=2483&resource=plsql.JPG&mode=preview

resserver.php?blogId=2483&resource=clob.JPG&mode=preview

resserver.php?blogId=2483&resource=blob.JPG&mode=preview

在这里还用到了empty_blob,empty_clob,bfilename三个函数.
他们都是用来初始化lob locator的.

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/129805/viewspace-928656/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/129805/viewspace-928656/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值