`

oracle中lob类型介绍

阅读更多

<LOB分类>
    LOB,即Large Objects(大对象),是用来存储大量的二进制和文本数据的一种数据类型(一个LOB字段可存储可多达4GB的数据)。它又分为两种类型:内部LOB和外部LOB。
    1.内部LOB将数据以字节流的形式存储在数据库的内部。因而,内部LOB的许多操作都可以参与事务,也可以像处理普通数据一样对其进行备份和恢复操作。Oracle支持三种类型的内部LOB:
    1)BLOB(二进制数据)
    2)CLOB(单字节字符数据)
    3)NCLOB(多字节字符数据)。
    其中CLOB和NCLOB类型适用于存储超长的文本数据,BLOB字段适用于存储大量的二进制数据,如图像、视频、音频等。

    2.目前只支持一种外部LOB类型,即BFILE类型。在数据库内,该类型仅存储数据在操作系统中的位置信息,而数据的实体以外部文件的形式存在于操作系统的文件系统中。因而,该类型所表示的数据是只读的,不参与事务。
    该类型可帮助用户管理大量的由外部程序访问的文件。


<LOB存储方式>
    LOB由两部分组成:数据(值)和指向数据的指针(定位器)。尽管值与表自身一起存储,但是一个LOB列并不包含值,仅有它的定位指针。更进一步,为了使用大对象,程序必须声明定位器类型的本地变量。

当内部LOB被创建时,定位器被存放在列中,值被存放在LOB段中,LOB段是在数据库内部表的一部分。
当BFILE被创建时,定位器如同平常一样存储在列中,但是它的值被存储在数据库之外的操作系统文件中。

<LOB 的PL/SQL 调用>

在Oracle中,存储在LOB中数据称为LOB的值,如使用Select   对某一LOB字段进行选择,则返回的不是LOB的值,而是该LOB字段的定位器(可以理解为指向LOB值的指针)。

而要对某一LOB的值进行访问和维护操作,必需通过其定位器来进行。DBMS_LOB包中提供的所有函数和过程都以LOB定位器作为参数:
APPEND()                     将源LOB中的内容加到目的LOB中     
COPY()                         从源LOB中复制数据到目的LOB     
ERASE()                       删除LOB中全部或部分内容     
TRIM()                           将LOB值减少到指定的长度     
WRITE()                        向LOB   中写入数据     
COMPARE()                  比较两个同种数据类型的LOB的部分或全部值是否相同     
GETLENGTH()               获取LOB的长度     
READ()                         从LOB中读出数据

-- 创建测试表

CREATE TABLE J_LOB_TEST(
lob_id NUMBER(3),    
pictures_lob BLOB DEFAULT empty_blob(),    
text_lob CLOB DEFAULT empty_clob(),    
media_file BFILE DEFAULT NULL,    
CONSTRAINTS PK_J_LOB_TEST_ID  PRIMARY KEY(lob_id)    
)

-- 写数据

DECLARE
  lobloc CLOB;
  buffer VARCHAR2(2000);
  amount NUMBER := 3;
  offset NUMBER := 2;
BEGIN

  insert into J_LOB_TEST (lob_id, text_lob) values (100, 'abcdefg');
  SELECT text_lob
    INTO lobloc --获取定位器    
    FROM J_LOB_TEST
   WHERE lob_id = 100;
  dbms_lob.read(lobloc, amount, offset, buffer); --读取数据到缓冲区    
  dbms_output.put_line(buffer); --显示缓冲区中的数据 
END;

 

转自:http://solecjj.blogbus.com/logs/19497504.html


分享到:
评论

相关推荐

    Oracle数据库中LOB的调优.pdf

    而后者是不管LOB字段的长度如何,都不存储在表的段内,而是仅在表的行内存储20个字节的LOB定位符以及其他非LOB类型的数据,其数据存储在类型为LOBSEGMENT的段内。 在LOB数据类型的存储和优化中,需要考虑到表空间的...

    用PHP操纵Oracle的LOB类型的数据

    在Oracle数据库中,当需要存储超过VARCHAR2...总之,PHP在处理Oracle的LOB类型时需要特别注意操作流程,通过OCI函数进行更复杂的处理以适应Oracle对LOB类型的特殊要求。这使得在存储和检索大数据时能保持高效和灵活。

    oracle dbms_lob

    Oracle数据库系统中,`DBMS_LOB`是一个重要的PL/SQL包,专门用于处理大型对象(LOBs,Large Object)。LOBs是Oracle提供的一种数据类型,用于存储大量数据,如文本、图像、音频或视频文件等。这个包包含了各种过程和...

    ORACLE LOB大对象处理

    在Oracle中,创建含有LOB列的表结构时,需要指定LOB类型和存储选项。例如: ```sql CREATE TABLE mylobs ( id NUMBER PRIMARY KEY, blob_data BLOB, clob_data CLOB ); ``` 存储选项包括`STORE AS`子句,...

    Oracle LOB字段处理工具

    这款工具主要针对Oracle数据库中的BLOB(Binary Large Object)、CLOB(Character Large Object)和NCLOB(National Character Large Object)等LOB类型提供便捷的管理和操作功能。它可能包括以下特性: 1. **数据...

    Oracle LOB 详解

    Oracle 11gR2 文档中提到,LOB 可以存储在表中,也可以作为对象类型的属性。同时,Oracle 10gR2 文档中也提供了关于 LOB 的详细信息。 1.1 创建包含 LOB 的表 创建包含 LOB 的表时,需要遵守以下几个原则: * ...

    Oracle Lob Performance Guidelines

    本文档将基于提供的描述和部分内容,详细介绍如何针对 Oracle LOB 进行性能调优。 #### LOB 类型概述 LOB(大型对象)类型用于存储大量的文本或二进制数据。Oracle 支持四种 LOB 类型:`CLOB`、`NCLOB`、`BLOB` 和...

    Oracle中LOB字段的存储管理和优化.pdf

    Oracle 中 LOB(Large OBjects)字段是一种特殊的数据类型,用于存储非结构化数据,如图像、音频、视频等。LOB 字段的存储管理和优化是数据库管理中一个重要的方面。本文将详细介绍 Oracle 中 LOB 字段的存储结构、...

    cx_Oracle.LOB类型数据转化成字典

    在给出的代码中,`cxOracleolbTrasferDict`函数就是专门用来将cx_Oracle.LOB类型的查询结果转化为字典的。 这个函数的工作原理是逐个读取LOB对象的值,然后拼接成一个字符串。由于LOB对象可能包含的是序列化的JSON...

    ODI LOB 类型KM

    首先,让我们详细了解一下LOB类型。在Oracle数据库中,LOB是一种特殊的数据类型,用于存储大型的二进制或文本数据,如图片、视频、文档或大段文本。LOB分为四种主要类型:BLOB(Binary Large Object)用于存储二进制...

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

    在本文中,我们将对 Oracle 和 DB2 的数据类型进行分类和对应说明,主要包括数值类型、日期时间类型、字符串类型、LOB 类型和 ROWID 类型等。 一、数值类型 Oracle 中的 NUMBER 类型可以对应 DB2/400 中的多种类型...

    关于oracle clob 类型字段重建索引SQL及修复用户表空间索引空间的存储过程

    在Oracle数据库中,CLOB(Character Large Object)类型字段用于存储大量的文本数据,如XML文档、长篇文章等。由于其特殊性,处理CLOB类型的字段时可能会遇到性能问题,特别是当涉及索引时。本话题将围绕如何针对...

    Oracle各种数据类型的介绍,适合中高级编程开发人员

    本文将详细介绍Oracle中的几种常见数据类型,并针对每种类型的特点进行分析,旨在帮助中高级编程开发人员以及初学者更好地理解和使用Oracle数据类型。 #### Character 类型 - **CHAR**: 是一种固定长度的字符类型...

    ORACLE中CLOB字段转String类型

    本文将详细介绍如何在Oracle中实现CLOB字段到字符串类型的转换,并探讨其中的关键技术和注意事项。 #### 一、CLOB概述 1. **定义**: - `CLOB`是Oracle数据库提供的一种特殊的数据类型,用于存储大文本数据。 - ...

    使用JDBC数据接口存取Oracle LOB(大对象).pdf

    总的来说,这篇文章深入浅出地讲解了Oracle数据库如何使用LOB类型存储非结构化数据,以及如何通过JDBC接口进行存取操作。对于Java开发者和Oracle数据库管理员来说,这篇文章提供了宝贵的理论知识和实践经验,有助于...

    Oracle中对LOB对象的操作.pdf

    Oracle数据库中的LOB(Large Object)数据类型用于存储非结构化数据,如文本、图像、音频和视频等。这种数据类型提供了高效、快速且灵活的数据访问方式。在Oracle中,LOB分为四种类型:BLOB、CLOB、NCLOB和BFILE。 ...

    Oracle中CLOB类型文字处理代码

    在Oracle数据库中,CLOB(Character Large Object)是一种用于存储大量文本数据的数据类型,如XML文档、长篇文章或任何其他非二进制的大型数据。本文将深入探讨Oracle中的CLOB类型文字处理,以及如何在实际操作中...

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

    四、ROW和LOB类型 DB2/400提供VARCHAR和CLOB与Oracle中的RAW和LONG RAW相对应。Oracle也支持大对象:BLOB、CLOB、NCLOB等。DB2/400中的BLOB和CLOB只能存放2GB的数据,而Oracle中的BLOB和CLOB可以提供4GB的空间。 ...

Global site tag (gtag.js) - Google Analytics