Oracle 读写文件文档

本文介绍如何使用PL/SQL过程将文件系统中的数据加载到Oracle数据库的BLOB字段。通过创建目录、过程及使用DBMS_LOB包实现文件读取与写入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

建立表
CREATE TABLE BLOBDATA
(
OID decimal(22) PRIMARY KEY NOT NULL,
DATA blob
);


建立目录和过程
create or replace directory doc_loc
as '/tmp';

CREATE OR REPLACE PROCEDURE Load_BLOB_From_File (file_name in varchar2,oid in number)
AS
src_loc bfile:= bfilename('DOC_LOC',Load_BLOB_From_File.file_name);
dest_loc BLOB;
begin
insert into blobdata(oid,data) values(Load_BLOB_From_File.oid,empty_blob()) returning data
into dest_loc;
DBMS_LOB.open(src_loc,DBMS_LOB.LOB_READONLY);
DBMS_LOB.LOADFROMFILE(
dest_lob => dest_loc
,src_lob => src_loc
,amount => DBMS_LOB.getLength(src_loc));
DBMS_LOB.CLOSE(src_loc);
COMMIT;
end;
/


在SQuirrel SQL下执行过程
{call LOAD_BLOB_FROM_FILE('test.txt',1190101)}


在PL/SQL下执行过程
exec LOAD_BLOB_FROM_FILE('test.txt',1190101)

[color=red]注意:[/color]
1. bfilename
语法:
BFILENAME (‘directory’, ‘file’)
变量:
directory:服务器中的物理目录名,最长只能30个字符
file:服务器中物理文件名
directory有大小写区分,这里尽量用大写

2. 文档必须是在数据库服务器上,路径不要写错
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值