VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

CLOB数据类型

功能描述

Vastbase对Oracle兼容模式下的CLOB数据类型的存储方式进行了优化。

CLOB类型用于存储大对象单字节的字符数据(如大型文本),使用TOAST表存储未经压缩的原始数据(暂时不支持压缩)。CLOB对象的存储空间最大为1GB-1字节。

考虑到列描述头信息的大小, 以及列所在元组的大小限制(也小于1GB-1字节),因此CLOB类型最大空间可能小于1GB-1字节。

注意事项

  • 该功能仅在数据库兼容模式为Oracle时支持(即数据库实例初始化时指定DBCOMPATIBILITY='A')。

  • 不支持基于CLOB类型创建索引。

  • CLOB 类型不支持直接比较操作及依赖比较的操作。

  • 支持临时CLOB特性:在PL/pgSQL中通过等号进行赋值的CLOB变量将指向同一个临时CLOB实例,对任一CLOB变量进行修改,仍然指向相同实例。

  • 不支持修改表中CLOB列类型。

  • 列存表不支持CLOB数据类型。

示例

示例1: 创建带有CLOB列的表。

1、创建测试表,带有CLOB列。

CREATE TABLE tb_115956 (id SERIAL PRIMARY KEY,col1 clob,col2 clob);

2、向测试表中插入CLOB数据。

INSERT INTO tb_115956(col1,col2) VALUES(to_clob('ABCDEF'::RAW(10)),CAST('测试文本' AS CLOB));

3、查询测试表数据。

SELECT * FROM tb_115956;

返回结果为:

 id |  col1  |   col2
----+--------+----------
  1 | ABCDEF | 测试文本
(1 row)

示例2: 通过DBMS_LOB的接口管理CLOB类型数据。

1、创建测试表并插入数据,其中含有CLOB类型的字段。

CREATE TABLE testtable(id int,c_lob clob);
INSERT INTO testtable VALUES(1,'clob测试');

2、设置serveroutput 为on(允许将dbms_output.put_line的输出信息输出至vsql的命令界面的屏幕上)。

SET serveroutput ON;

3、调用dbms_lob.open,根据传入的参数打开对应的LOB对象。

DECLARE 
  v_clob clob;
  v_clob2 clob;
  len int;
BEGIN
  SELECT c_lob INTO v_clob FROM testtable WHERE id=1;
  dbms_lob.open(v_clob,dbms_lob.lob_readwrite);
  dbms_output.put_line('clob1:'||v_clob);
  dbms_lob.close(v_clob);
END;
/

返回结果为:

clob1:clob测试
ANONYMOUS BLOCK EXECUTE

清理环境

DROP TABLE tb_115956,testtable;