Oracle中bfile类型的用法
admin
2023-05-08 07:22:01
0

bfile类型是一种lob类型,bfile类型只是操作系统上一个文件的指针,用于为操作系统文件提供只读访问。在数据库之外进行维护,不是数据库的一部分。

使用bfile时,需要使用一个Oracle的directory对象,directory对象只是将一个操作系统目录映射至数据库中的一个"串"或一个名称。

创建表bfile_test,os_file字段类型为bfile

SQL> create table bfile_test (id int primary key,os_file bfile) ;

创建用于存放文件的目录

SQL> create or replace directory my_dir as '/home/oracle/photo';

向表中插入内容

SQL> insert into bfile_test values(1,bfilename('MY_DIR','1.jpg')) ;

SQL> commit ;

可以看到指定文件的大小

SQL> select dbms_lob.getlength(os_file) from bfile_test ;

注意在插入的时候,my_dir一定要大写,否则会出现错误。(插入时正常,查询的时候会出错)

SQL> insert into bfile_test values(2,bfilename('my_dir','1.jpg')) 

SQL> commit ;

SQL> select dbms_lob.getlength(os_file) from bfile_test ;

ERROR:

ORA-22285: non-existent directory or file for GETLENGTH operation

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

SQL> select * from bfile_test ;

在plsql developer中查看时,第一次插入的是正常的,第二次插入查看显示Value Error

bfile在磁盘上占用的空间不定,取决于directory对象名和文件名的长度,一般来说,bfile会占用大约20字节的开销。

和其他的lob数据不同,bfile数据不是"读一致"的,由于bfile在数据库之外进行管理,对bfile接触引用的时候,不论文件上发生了什么,都会反映到得到的结果中,所以,反复读同一个bfile可能会产生不同的结果。 

相关内容

热门资讯

Google在港推出AI代理G... 观点网讯:7月29日,Google在香港推出AI代理Gemini Spark,该代理可全天候在后台运...
5G+165Hz!联想新品官宣... 近两年来,小屏平板一直是比较有趣的一个品类。 不同于大平板注重效率、手机追求万能的特点,拯救者Y70...
原创 马... 马斯克又出来了。这次说2036年钱就没用了。 理由是人工智能加机器人,东西多到你用不完,还拿钱干嘛...
美的集团:我国智能家居互联互通... IT之家 7 月 30 日消息,美的集团今日发布公告,7 月 21 日至 23 日,智能家居互联互通...
华为新款MatePad Pro... 【CNMO科技消息】7月30日,@华为终端 官宣全新旗舰平板华为MatePad Pro。 新款华为...
从实验室到实景验证:6G光子太... 全息通信是第六代移动通信(6G)的典型应用场景之一,旨在通过融合无线传输与全息三维成像技术,实现超大...
从“能对话”到“能干活”——人... 【经济界面】 光明日报记者 刘坤 李晓东 周洪双 人工智能(AI)眼镜化身为个人“助理”,实时进行...
【全新发布】UminiP Pr... (来源:洲明科技)
日本通过“H3火箭8号”发射失... △H3火箭(资料图) 日本文部科学省30日召开关于去年“H3火箭8号”发射失败的会议。会议通过的最终...
互联网巨头抢滩健康硬件,上游芯... 封面新闻记者 付文超 当下,互联网巨头对健康硬件的押注,正在成为产业现实,加速拉动整个产业链步入新一...