`

oracle中的大对象数据类型blob、clob、nclob的意义以及区别

 
阅读更多

原文出处http://blog.csdn.net/yoyo_yaya/article/details/1494944

 

    这些天一直在试图把一个用Oracle数据库做的项目转换为用msSql2000数据库的,本以为只要把数据库的连接池改改就可以了,没想到事实并没那么简单~ 要改的地方有好多,改了几天,也学了几天,今天又学到一个。

在我的程序中有这样的SQL语句:

sql = "insert into tab_publish_template(id, name, language, content, filename, editor, editime, priority, remark) "
            + " values(" + myId + ","
            + "'" + Common.toSql(myName) + "',"
            + "'" + Common.toSql(myLanguage) + "',"
            + "empty_clob(),"
            + "'N/A',"
            + "'" + Common.toSql(myEditor) + "',"
            + "SYSDATE,"
            + myPriority + ","
            + mySqlRemark
            + ")";
stmt.executeUpdate(sql);
//处理CLOB型数据   --- oracle 数据库
        sql = "select content from tab_publish_template where id=" + myId + " for update";
        rs = stmt.executeQuery(sql);
        if (rs.next())
        ...{
              //oracle.sql.CLOB clob = (oracle.sql.CLOB)rs.getClob("content");
              String clob = rs.getString("content");
              clob.putString(1, myContent);
              sql = "update tab_publish_template set content=? where id=" + myId;
              PreparedStatement pstmt = conn.prepareStatement(sql);
              pstmt.setClob(1, clob);
              pstmt.executeUpdate();
              pstmt.close();
        }
        rs.close();
        rs = null;
没有看懂 empty_clob() 这个是干什么的,在原来的oracle 数据库脚本中找到content 字段的类型是 clob   型的,只看脚本,我只能理解是这个字段重要放很多,很长的数据,要足够大,于是就想在sql2000 中找到同样的字段类型,但是很不幸:没得~     于是就搜了一大堆资料出来~ 最后也看个一知半解得了吧~   贴上来,给需要的朋友一起讨论。

 

一、请问clob    和blob是什么意思?

答:1,他们都是oracle数据库中的大对象数据类型,oracle提供专门的包对其操作。

          2,blob、clob、nclob    三种大型对象(LOB),用来保存较大的图形文件或带格式的文本文件,如Microsoft    Word文档,以及音频、视频等非文本文件,最大长度是4GB。   

          LOB有几种类型,取决于你使用的字节的类型,Oracle    8i实实在在地将这些数据存储在数据库内部保存。   
    可以执行读取、存储、写入等特殊操作   
     
         CLOB(Character    Large    Object)     用于存储对应于数据库定义的字符集的字符数据。(类似于long类型)   
     
          BLOB(Binary    Large    Object)    可用来存储无结构的二进制数据。(类似于row和long    row)

二、请问LOB的BLOB、CLOB、BFILE有什麽区别,都用在什麽情况?怎样操作?

答:

BLOB    ——内部二进制大对象。   
CLOB   ——内部字符大对象。   
NCLOB    ——内部定长多字节字符大对象。   
BFILE    ——外部二进制文件。      
    LOB   由两部分组成:数据(值)和指向数据的指针(定位器)。尽管值与表自身一起存储,但是一个LOB 列并不包含值,仅有它的定位指针。更进一步,为了使用大对象,程序必须声 明定位器类型的本地变量。你将在本章后面见到P    L    /    S    Q    L    接口使用定位器如同操作系统的文件 处理一样。当LOB(除了BFILE   )被创建时,定位器被存放在列中,值被存放在LOB 段中,   LOB   段是在数据库内部表的一部分。当BFILE   被创建时,定位器如同平常一样存储在列中

三、blob和clob最大是多少?还是没有最大限制?

答:它们的最大上限就是4G,    Clob可以存储单字节字符数据,Blob可以存储无结构的二进制数据


[附]  
不想另开一篇了,就加在这里了,一个关于SQL2000的问题
sql2000中某字段长度不够为何会填上空格?

答:sql2000中char型是固定长度的,如固定长度为10,但是只录入了3个字符,那么剩下7位就要补充空格来填满。如果,你不想让他自动补充空格,可以选用varchar型,这个是实际长度,也很好用,速度也快,PS:oracle中如果可以用varchar2的地方就不要用clob ,因为后者的速度确实不怎么好。

另外,SQLSERVER中,可存储最大容量的字段类型是image类型,最大长度2GB。

分享到:
评论

相关推荐

    oracle对大对象类型操作:blob,clob,nclob,bfile

    Oracle数据库系统支持对大型数据对象(LOBs,Large Objects)的操作,这包括BLOB、CLOB、NCLOB和BFILE四种类型。每种类型都有其特定的用途和特性,适用于存储不同类型的大数据。 1. BLOB(Binary Large Object): ...

    mysql和Oracle在对clob和blob字段的处理

    - 存储机制:MySQL的`TEXT`和`BINARY`系列数据类型通常存储在数据页中,而Oracle的`CLOB`和`BLOB`可以存储在表空间中,允许更大的数据量。 - 索引支持:Oracle支持对`CLOB`和`BLOB`字段建立索引,而MySQL的索引...

    ORACLE中CLOB字段转String类型

    在Oracle数据库中,`CLOB`(Character Large Object)是一种用于存储大量文本数据的数据类型。由于其能够存储非常大的文本块(最大可达4GB),因此常被用于存储文章、报告或任何其他大型文本内容。然而,在处理CLOB...

    oracle中的BLOB(照片)转换到mysql中

    Oracle数据库系统支持多种复杂的数据类型,其中包括BLOB(Binary Large Object),用于存储非结构化的大数据,如图片、音频或视频文件。而MySQL同样提供了BLOB类型,用于相似的用途。本篇将详细讲解如何在Oracle与...

    Oracle与DB2数据类型分类对应说明

    Oracle 也支持大对象:BLOB、CLOB、NCLOB 等。例如,Oracle 中的 BLOB 和 CLOB 可以提供 4GB 的空间,而 DB2/400 中的 BLOB 和 CLOB 只能存放 2GB 的数据。 五、ROWID 类型 Oracle 中的 ROWID 虚拟列用于对表中的...

    oracle的数据类型_java中Clob型详细用法_struts中实现图片上传功能

    5. LONG: 用于存储长字符串,最大长度可达 2GB,但不支持字符串搜索,已被 BLOB、CLOB 和 NCLOB 等大对象类型逐渐取代。 6. RAW(n) 和 LONG RAW: 二进制数据类型,RAW 用于存储较小的二进制文件,最大长度为 2000 ...

    批量导出ORACLE数据库BLOB字段生成图片

    Oracle数据库在存储大对象(BLOB)数据时,提供了高效且灵活的方式,使得二进制数据如图片、文档等能够安全地保存在数据库中。批量导出Oracle数据库中的BLOB字段生成图片,是一项常见的需求,尤其对于那些需要将...

    Oracle数据库大对象数据存取的两种实现方法及时间性能比较.pdf

    部分内容中,作者首先介绍了Oracle中的大对象数据分类,包括字符类型(CLOB和NCLOB)和二进制类型(BLOB),以及BFILE类型,后者存储在操作系统文件中。接着,讨论了两种存取方式:数据存储在内部表空间和指向操作...

    jdbc读写Oracle的CLOB字段

    JDBC读写Oracle的CLOB字段

    Oracle与DB2数据类型的对应说明书

    Oracle也支持大对象:BLOB、CLOB、NCLOB等。DB2/400中的BLOB和CLOB只能存放2GB的数据,而Oracle中的BLOB和CLOB可以提供4GB的空间。 五、ROWID类型 Oracle中的ROWID虚拟列用于对表中的某一列进行唯一标示,DB2/400...

    sql server 和oracle 中数据类型的区别

    本文将深入探讨SQL Server与Oracle中的数据类型区别,并通过具体的例子来说明这两种系统之间的转换方法。 ### SQL Server 数据类型 SQL Server 是微软开发的一款关系型数据库管理系统,它支持多种数据类型,可以...

    oracle中blob 字段类型的应用

    在Oracle数据库中,Blob与Clob(Character Large Object)、Bfile和Nclob一同构成了大对象类型。 Clob是用来存储字符数据,同样最大可达到4GB,适用于文本内容。Bfile则是一种外部LOB,它存储在数据库外部的文件...

    关于在Hibernate中对于Clob,Blob字段的处理方法

    本篇将详细介绍在Hibernate中如何处理Clob和Blob字段,以及使用特定Oracle JDBC驱动程序的优势。 首先,Hibernate通过`org.hibernate.type`包中的`ClobType`和`BlobType`来映射Clob和Blob。在实体类中,你需要定义...

    oracle基本数据类型

    本文将详细介绍 Oracle 中的基本数据类型,并讨论它们的特点和使用区别。 字符类型 Oracle 中有多种字符类型,包括 char、varchar、varchar2、long 等。 * char(n):定长字符串,最大长度为 2000 字节。char ...

    Oracle基本数据类型.pdf

    - 较老的数据类型,逐渐被 BLOB/CLOB/NCLOB 等大对象数据类型所取代。 - **应用场景**: 早期版本中用于存储大量文本信息。 #### 三、数值数据类型 ##### NUMBER (m, n) - **定义**: 可变长的数值列,允许 0、...

    oracle数据类型.doc

    随着技术发展,Long类型正逐渐被BLOB、CLOB和NCLOB等大对象数据类型取代。 6. **Raw(n)**: 用于存储固定长度的二进制数据,最大长度为2000字节,适用于小型图形或格式化文本文件。与Long一样,它也在逐渐被淘汰,被...

    java、mysql以及oracle数据类型对照表

    同时,Oracle的NCLOB和BFILE等非BLOB/CLOB类型用于存储特定类型的字符数据和大文件,这些在Java中也需要特殊处理。 在实际开发中,理解这些数据类型对应关系有助于编写高效的SQL查询,避免类型不匹配导致的错误。...

    oracle和sql数据类型

    Oracle 和 SQL 数据类型是数据库管理系统中用于定义和存储数据的基础组件。它们决定了数据的结构、大小以及如何进行处理。以下是两种数据库系统中主要数据类型的详细比较: **Oracle 数据类型** 1. **Char**: Char...

    Oracle12c数据库基础教程Oracle12c数据库对象管理.pptx

    大对象(LOB)型数据类型包括 BFILE、BLOB、CLOB、NCLOB 等。BFILE 是二进制文件定位器,BLOB 是非结构化的二进制大对象数据,CLOB 是单字节或多字节字符大对象数据,NCLOB 是 Unicode 编码字符大对象数据。 Rowid ...

Global site tag (gtag.js) - Google Analytics