`
yshlin
  • 浏览: 62585 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

Oracle中的BLOB与CLOB

阅读更多

本文系转载,具体出处一直没找到,请见谅!

 

一、区别和定义
 LONG: 可变长的字符串数据,最长2G,LONG具有VARCHAR2列的特性,可以存储长文本一个表中最多一个LONG列
 LONG RAW: 可变长二进制数据,最长2G
 CLOB:  字符大对象Clob 用来存储单字节的字符数据
 NCLOB: 用来存储多字节的字符数据
 BLOB: 用于存储二进制数据
 BFILE: 存储在文件中的二进制数据,这个文件中的数据只能被只读访。但该文件不包含在数据库内。
 bfile字段实际的文件存储在文件系统中,字段中存储的是文件定位指针.bfile对oracle来说是只读的,也不参与事务性控制和数据恢复.
 CLOB,NCLOB,BLOB都是内部的LOB(Large Object)类型,最长4G,没有LONG只能有一列的限制
 要保存图片、文本文件、Word文件各自最好用哪种数据类型?
 --BLOB最好,LONG RAW也不错,但Long是oracle将要废弃的类型,因此建议用BLOB。

二、操作(GET\PUT)
CLOB

//获得数据库连接    
Connection con = ConnectionFactory.getConnection();    
con.setAutoCommit(false);    
Statement st = con.createStatement();    
//不需要“for update”    
ResultSet rs = st.executeQuery("select CLOBATTR from TESTCLOB where ID=1");    
if (rs.next()){    
    java.sql.Clob clob = rs.getClob("CLOBATTR");    
    Reader inStream = clob.getCharacterStream();    
    char[] c = new char[(int) clob.length()];    
    inStream.read(c);    
    //data是读出并需要返回的数据,类型是String    
    data = new String(c);    
    inStream.close();    
}    
inStream.close();    
con.commit();    
con.close(); 

BLOB

//获得数据库连接    
Connection con = ConnectionFactory.getConnection();    
con.setAutoCommit(false);    
Statement st = con.createStatement();    
//不需要“for update”    
ResultSet rs = st.executeQuery("select BLOBATTR from TESTBLOB where ID=1");    
if (rs.next())    
{    
    java.sql.Blob blob = rs.getBlob("BLOBATTR");    
    InputStream inStream = blob.getBinaryStream();    
    //data是读出并需要返回的数据,类型是byte[]    
    data = new byte[input.available()];    
    inStream.read(data);    
    inStream.close();    
}    
inStream.close();    
con.commit();    
con.close();

CLOB

//获得数据库连接    
Connection con = ConnectionFactory.getConnection();    
con.setAutoCommit(false);    
Statement st = con.createStatement();    
//插入一个空对象empty_clob()    
st.executeUpdate("insert into TESTCLOB (ID, NAME, CLOBATTR) values (1, "thename", empty_clob())");    
//锁定数据行进行更新,注意“for update”语句    
ResultSet rs = st.executeQuery("select CLOBATTR from TESTCLOB where ID=1 for update");    
if (rs.next())    
{    
    //得到java.sql.Clob对象后强制转换为oracle.sql.CLOB    
    oracle.sql.CLOB clob = (oracle.sql.CLOB) rs.getClob("CLOBATTR");    
    Writer outStream = clob.getCharacterOutputStream();    
    //data是传入的字符串,定义:String data    
    char[] c = data.toCharArray();    
    outStream.write(c, 0, c.length);    
}    
outStream.flush();    
outStream.close();    
con.commit();    
con.close();    

BLOB

//获得数据库连接    
Connection con = ConnectionFactory.getConnection();    
con.setAutoCommit(false);    
Statement st = con.createStatement();    
//插入一个空对象empty_blob()    
st.executeUpdate("insert into TESTBLOB (ID, NAME, BLOBATTR) values (1, "thename", empty_blob())");    
//锁定数据行进行更新,注意“for update”语句    
ResultSet rs = st.executeQuery("select BLOBATTR from TESTBLOB where ID=1 for update");    
if (rs.next())    
{    
    //得到java.sql.Blob对象后强制转换为oracle.sql.BLOB    
    oracle.sql.BLOB blob = (oracle.sql.BLOB) rs.getBlob("BLOBATTR");    
    OutputStream outStream = blob.getBinaryOutputStream();    
    //data是传入的byte数组,定义:byte[] data    
    outStream.write(data, 0, data.length);    
}    
outStream.flush();    
outStream.close();    
con.commit();    
con.close(); 

 

分享到:
评论

相关推荐

    oracle(blob转换为clob)

    在Oracle数据库环境中,数据类型BLOB(Binary Large Object)用于存储大量的二进制数据,如图像、音频或视频文件,而CLOB(Character Large Object)则用于存储大量文本数据。在某些情况下,可能需要将BLOB类型的...

    oracle Blob转换Clob

    #### 知识点一:Oracle Blob与Clob的基本概念 - **Blob (Binary Large Object)**:在Oracle数据库中,Blob类型用于存储大量的二进制数据,如图像、视频或文档等非结构化数据。 - **Clob (Character Large Object)**...

    oracle中的Blob和Clob区别

    ### Oracle中的BLOB和CLOB的区别 在Oracle数据库中,`BLOB`(Binary Large Object)和`CLOB`(Character Large Object)是用于存储大量数据的两种特殊数据类型。这两种类型都属于`LOB`(Large Object)类别,主要...

    图片存入Oracle中,用clob和blob两种方式

    在数据库管理中,存储非结构化数据...综上所述,`CLOB`和`BLOB`都是在Oracle中存储图片的有效方法,具体选择哪种方式取决于应用场景和需求。`ClobAndBlob`工具提供了一种便捷的方式来体验和比较这两种方式的使用效果。

    oracle Blob Clob 大数处理 代码

    在Oracle中,Blob和Clob的处理涉及到许多关键知识点,包括创建、读取、更新和删除大对象数据。以下是一些相关的详细说明: 1. **创建LOB字段**: 在创建表时,可以添加Blob或Clob字段来存储大对象。例如: ```sql...

    Oracle导出Clob,Blob工具

    在描述中提到的“Oracle导出Clob,Blob等大字段工具”就是为了解决这个问题而设计的,它是一个自编写的实用程序,方便用户导出和管理Oracle数据库中的大对象数据。 Oracle数据库中的Clob类型用于存储大量的文本数据...

    oracle中使用jdbc读写clob和blob字段

    Oracle 中使用 JDBC 读写 CLOB 和 BLOB 字段 在 Oracle 中,使用 JDBC 读写 CLOB(Character Large OBject)和 BLOB(Binary Large OBject)字段是非常重要的。CLOB 和 BLOB 是 Oracle 中的 LOB(Large OBject)...

    BLOB和CLOB的区别以及在ORALCE中的插入和查询操作

    了解BLOB和CLOB的区别以及如何在Oracle中进行插入和查询操作对于数据库开发者和管理员来说至关重要。 首先,我们来看BLOB和CLOB的主要区别: 1. 数据类型:BLOB用于存储二进制大对象,如图片、视频、音频文件或者...

    如何将DB2数据库中的大对象(BLOB,CLOB)数据类型复制到Oracle数据库中

    本例中,我们讨论如何将DB2数据库中的BLOB数据类型复制到Oracle数据库。 1. **BLOB与CLOB数据类型**: BLOB(Binary Large Object)存储二进制大对象,如图像、音频或视频文件。CLOB(Character Large Object)...

    Mybatis 处理 CLOB、BLOB 类型数据

    在 Oracle 数据库中,BLOB 类型对应的数据库类型是 BLOB,在 MySQL 中对应的类型是 BLOB。 MyBatis 提供了对 CLOB 和 BLOB 类型的内置支持,通过将 CLOB 类型映射到 Java 的 String 类型,BLOB 类型映射到 byte[] ...

    weblogic.jdbc.wrapper.Clob_oracle_sql_CLOB 类型转换解决办法

    在使用 WebLogic 服务器进行应用程序开发时,尤其是在处理 Oracle 数据库中的 CLOB 类型数据时,开发者可能会遇到类型转换的问题。本文将详细介绍如何通过反射机制来解决 WebLogic 环境下 Oracle CLOB 类型转换成 `...

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

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

    Oracle导出Clob,Blob工具版本2

    "Oracle导出Clob,Blob工具版本2" 是一个专为解决这个问题而设计的应用程序,它改进了对CLOB(Character Large Object)和BLOB(Binary Large Object)数据类型的导出效率,特别是修复了上一版本中导出时间过长的问题...

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

    本篇将详细讲解如何在Oracle与MySQL之间进行BLOB类型的转换,特别是针对照片的处理。 首先,让我们了解BLOB类型。BLOB是一种可以存储大量二进制数据的对象,分为四种子类型:BLOB、CLOB、NCLOB和BFILE。在Oracle中...

    clob-blob.rar_blob and clob_clob_java CLOB_java oracle cl_oracle

    对于CLOB和BLOB字段,Oracle JDBC驱动提供了`oracle.jdbc.driver.OracleClob`和`oracle.jdbc.driver.OracleBlob`类,它们实现了Java的标准接口`java.sql.Clob`和`java.sql.Blob`。这两个接口提供了读取和写入大数据...

    Oracle8i对Blob和Clob类型的操作

    在Oracle8i版本中,数据库支持了大型对象(LOB)类型,包括BLOB(Binary Large Object)和CLOB(Character Large Object)。这两种数据类型用于存储大量二进制数据(如图片、视频或文档)和文本数据(如长篇文章或...

    ORACLE中CLOB字段转String类型

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

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

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

    sql server中的image类型的数据导出到oracle的clob字段中

    SQL Server 中 Image 类型数据导出到 Oracle 的 CLOB 字段中 在进行数据库迁移或数据交换时,需要将不同数据库管理系统之间的数据类型进行转换。在本文中,我们将讨论如何将 SQL Server 中的 Image 类型数据导出到 ...

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

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

Global site tag (gtag.js) - Google Analytics