我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:神州彩票 > 二进制大对象 >

net如何从数据库取出二进制数据转化为rtf文件

归档日期:04-30       文本归类:二进制大对象      文章编辑:爱尚语录

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  展开全部Oracle的Blob字段比较特殊,他比long字段的性能要好很多,可以用来保存例如图片之类的二进制数据。

  写入Blob字段和写入其它类型字段的方式非常不同,因为Blob自身有一个cursor,你必须使用cursor对blob进行操作,因而你在写入Blob之前,必须获得cursor才能进行写入,那么如何获得Blob的cursor呢?

  这需要你先插入一个empty的blob,这将创建一个blob的cursor,然后你再把这个empty的blob的cursor用select查询出来,这样通过两步操作,你就获得了blob的cursor,可以真正的写入blob数据了。

  主要是用来存储大量数据的数据库字段,最大可以存储4G字节的非结构化数据。

  主要介绍字符类型和二进制文件类型LOB数据的存储,单独介绍二进制类型LOB数据的存储。

  BFILE:将二进制文件存储在数据库外部的操作系统文件中。存放文件路径。

  逻辑目录名只能大写,因为数据词典是以大写方式存储。Oracle是区分大小写的。

  在创建时,无需将BFileName函数逻辑目录指向物理路径,使用时才做检查二者是否关联。

  ①:DBMS_LOB.Read():从LOB数据中读取指定长度数据到缓冲区的过程。

  DBMS_LOB.Read(LOB数据,指定长度,起始位置,存储返回LOB类型值变量);

  ⑤:are():比较二个大对象是否相等。返回数值0为相等,-1为不相等。

  

  操作会改变数据库中原有数据,需要加上Updata锁锁上指定数据列,修改完后提交事务。

  ③:DBMS_LOB.Erase():删除LOB数据中指定位置的部分数据的过程;

  ④:DBMS_LOB.Trim():截断LOB数据中从第一位置开始指定长度的部分数据的过程;

  Clob/blob实现是比较复杂的,这里只提提几个和性能相关的点,当然能不用lob尽量不用:

  c、 当lob存放在表中的时候,它可以被缓存,对于它的操作效率远远高于存储在lobsegment中的lob(不用lobindex)

  d、 存储在lobsegment中的lob缺省不在缓冲区缓存,对于lob的读写都是物理IO,代价非常高,所以对于大于4kb的lob字段千万不要频繁更新,效率非常低

  e、 存储在lobsegment中的lob可以在定义的时候指定使用cache(默认是nocache),这对于中等大小的lob(比如几k~几十k)很有效果,减少物理IO

  定长格式字符串,在数据库中存储时不足位数填补空格,不建议使用,会带来不必要的麻烦

  b、 字符串比较的时候,如果用trim函数,这样该字段上的索引就失效(有时候会带来严重性能问题)

  a、 网上有说char比varchar2性能好,但是如果你有兴趣做测试的话,会发现没有区别(如果发生行迁移,可以通过pctfree来调整)

  b、 s代表小数位数,取值范围-84~127,默认取值要看是否指定了p,如果制定了p,默认s为0,如果没有指定p,默认取最大值。

  如果插入123.555存储在数据库中变成123.56 (在小数的第三位上四舍五入),如果插入999.999,数据库就要抛错。

  如果插入9999949存储在数据库中变成9999900(在整数的第二位上四舍五入),如果插入9999950,数据库就要抛错。

  性能相关:number是一种软实现的类型,如果需要对number做复杂的运算,建议先用cast内置函数转换number为浮点数类型

  另外需要注意的一点是:number是变长类型,在计算表存储空间的时候要切记

  Date类型是一个7字节的定长数据类型,没啥好说的,一个例子:性能abc

本文链接:http://runhappyplace.com/erjinzhidaduixiang/154.html