向oracle的blob字段导入文件

在数据库主机上创建测试目录及文件

$mkdir /test

$cd /test

$echo "Test Subject" >> subject.html

$echo "test ok !" >> mail.html

定义文件路径(都是数据库主机上的),并授权

$sqlplus user/[email protected]

SQL>create or replace directory send_file_dir as ‘/test‘;

SQL>grant read on directory send_file_dir to test1;

如下是向发邮件的表中插入内容(表中有两个blob字段subject,message)

$sqlplus user/[email protected]

SQL>declare

destloc blob;

destmsg blob;

srcfile bfile:=BFILENAME(‘SEND_FILE_DIR‘,‘subject.html‘);

msgfile bfile:=BFILENAME(‘SEND_FILE_DIR‘,‘mail.html‘);

BEGIN

insert into email_send values (seq_email_id.nextval,null,‘[email protected]‘,null,null,empty_blob(),empty_blob(),sysdate,null,‘waiting‘,0,‘HTML‘,null)

returning subject,message into destloc,destmsg; --这里如果有多个blob字段再增加。

dbms_lob.fileopen(srcfile);

dbms_lob.loadfromfile(destloc,srcfile,dbms_lob.getlength(srcfile));

dbms_lob.fileclose(srcfile);

dbms_lob.fileopen(msgfile);

dbms_lob.loadfromfile(destmsg,msgfile,dbms_lob.getlength(msgfile));

dbms_lob.fileclose(msgfile);

commit;

END;

/

这样就向表email_send插入了两个blob字段。

subject字段内容为subject.html

message字段内容为mail.html



报错信息

ERROR at line 1:

ORA-22288: file or LOB operation FILEOPEN failed

No such file or directory

ORA-06512: at "SYS.DBMS_LOB", line 805

ORA-06512: at line 9

解决方法

这些文件都是在数据库主机上的,如果主机上没有这些文件都会报错。在主机上创建目录及文件就ok了,我暂时还没找到从远程上读取文件的方法,如果哪位兄弟知道的话,告诉下,谢谢!!

时间: 2024-12-08 11:11:35

向oracle的blob字段导入文件的相关文章

JAVA读取Oracle数据库BLOB字段数据文件并保存到本地文件

******JAVA读取Oracle数据库BLOB字段数据文件并保存到本地文件****** package com.bo.test; import java.io.FileOutputStream; import java.io.InputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import

Oracle数据库BLOB字段的存取

述]     Oracle的Blob字段比较特殊,他比long字段的性能要好很多,可以用来保存例如图片之类的二进制数据. 写入Blob字段和写入其它类型字段的方式非常不同,因为Blob自身有一个cursor,你必须使用cursor对 blob进行操作,因而你在写入Blob之前,必须获得cursor才能进行写入,那么如何获得Blob的cursor呢? 这需要你先插入一个empty的blob,这将创建一个blob的cursor,然后你再把这个empty的blob的cursor 用select查询出来

Java读取/更新Oracle数据库blob字段

在写java程序过程中,如何读取Oracle数据库表某类型为blob的字段? 以下是我在写程序的时候一种解决方法.核心语句.(传上来做了修改,格式不要学习,养成良好习惯) 详细请参考: 读取序列ID:http://blog.csdn.net/yzsind/article/details/6918506 BLOB相关:http://jslfl.iteye.com/blog/1771949 http://www.linuxidc.com/Linux/2011-08/40218.htm http://

对oracle数据库Blob字段的操作

java实体类 定义类型 byte[] private byte[] str_blob hibernate映射文件类型oracle.sql.BLOB <property name="str_blob" type="oracle.sql.BLOB"> <column name="STR_BLOB" /> </property> 数据库类型BLOB byte[] b = str.getBytes(); String

Oracle数据泵远程导入文件到本地数据库

--以dba身份登录 C:\Users\Administrator>sqlplus / as sysdba --创建用户 SQL> create user bfzg0828 identified by bfzg0828 default tablespace users quota unlimited on users; --授予连接角色,资源角色给用户 SQL> grant connect,resource to bfzg0828; 授权成功. --授权创建数据链接 SQL> gr

ORACLE 向BLOB字段中出入图片等二进制文件,使用Oracle SQl Developer工具

使用PL/SQL也可以 create directory "image" as 'e:\'; --"image" 要带双引号,网上很多不带的,我测试时出错,并且,'e:\'是服务器目录,非本地目录.需要给用户授权:grant create any directory to username; declare b_file bfile; b_lob blob; begin insert into TB_SJ(SJBM,SJMC,RKSJ,XGSJ,GSBM,SJDAT

好记性不如烂笔头20-java对oracle的clob和blob字段的总结

整体情况 CLOB字段在实际工作中,还是有很多的应用场景:但是BLOB字段在现在的大型系统中,作用越来越不尽如人意. 因为数据库资源,在大型系统中,升级成本是最高的:而BLOB字段中大量的数据,会给数据库造成严重的IO问题.如果我们购买几百万的小型机,就是为了存放几张普通图片,估计会被人把牙齿笑掉:虽然数据库有良好的认证系统,但是不代表用文件系统不能实现. 因此,如果是老的系统,如果我们不打算全面重构和升级,那么这个BLOB改用还是要用:如果是新的系统,原则上不推荐BLOB字段,实现的代价较高,

java读取oracle数据库中blob字段

测试表 create table TEST_IMG ( ID INTEGER not null, NAME VARCHAR2(32), IMAGE BLOB ); 说明: 1.使用JDBC演示 2.IMAGE字段存储一个图片 程序代码如下: import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; im

odp.net 读写oracle blob字段

DEVELOPER: ODP.NET Serving Winning LOBs: http://www.oracle.com/technetwork/issue-archive/2005/05-nov/o65odpnet-085139.html Data Provider for .NET Developer's Guide: https://docs.oracle.com/database/121/ODPNT/OracleBlobClass.htm#ODPNT4035 从blob字段读取一个图