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;