原文链接:https://www.gbase.cn/community/post/4141
更多精彩内容尽在南大通用GBase技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。
数据库对大对象(LOB)的处理能力直接影响到数据存储的效率和便捷性。国产数据库GBase 8s系统提供了对简单大对象和智能大对象的全面支持。本文将探讨GBase 8s中大对象的存储方式和插入方法,帮助用户更高效地管理大规模文本和二进制数据。
1. 简单大对象的存储
- TEXT
存储所有类型的文本数据。它可以同时包含语言环境支持的单字节字符和多字节字符。
- BYTE
以无差别字节流的形式存储任何种类的二进制数据。二进制数据通常由数字化的信息(如:电子表格、程序装入模块和数字化声音模式等等)组成。
数据库服务器直接地从 LOAD FROM 文件装入简单大对象(BYTE 和 TEXT 列)。LOAD语法图如下图所示:
在您装入 BYTE 和 TEXT 数据时,请记住下列限制:
- 您不可在 BYTE 字段中有开头和结尾的空白
- 使用反斜杠 / 转义 TEXT 字段中的精确分隔符和反斜杠字符的特殊意义。
- 正在装入到 BYTE 列内的数据必须为 ASCII 十六进制格式。BYTE 列不可包含前导空白。
- 请不要在 LOAD FROM 文件中使用下列字符作为分隔符:数字(0 至 9)、字母 a 至 f 和 A 至 F、反斜杠(\)字符或 NEWLINE(CTRL-J)字符。
示例:
create table test(id int,col1 text,col2 byte);
vi data.txt
1|1234abc|01010101af|
2|1234abc|01010101af|
3|1234abc|01010101af|
load from './data.txt' delimiter "|" insert into test;
> create table test(id int,col1 text,col2 byte);
Table created.
> load from './data.txt' delimiter "|" insert into test;
3 row(s) loaded.
> select * from test;
id 1
col1
1234abc
col2 <BYTE value>
id 2
col1
1234abc
col2 <BYTE value>
id 3
col1
1234abc
col2 <BYTE value>
3 row(s) retrieved.
2. 智能大对象的存储
- BLOB - 以随机存取块的形式存储任何种类的二进制数据。二进制数据通常由已保存的电子表格,程序装入模块和数字化声音模式等等组成。- BLOB列最长可为2^42个字节,不过系统资源可能会强加较低的实际限值,分配给智能大对象数据类型的最小磁盘空间量为512字节。
- CLOB - CLOB数据类型以随机存取块的形式存储任何种类的文本数据。如果此信息也是文本的(例如,PostScript、“超文本标记语言”(HTML)、“标准图形标记语言”(SGML)、“可扩展标记语言”(XML)数据),那么文本数据也包括文本格式的信息。
GBase 8s 将智能大对象存储在智能大对象空间中。智能大对象空间是包含只存储BLOB和CLOB数据的一个或多个块的逻辑存储器区域。
示例
表结构
create table test(id int, col1 blob, col2 clob);
gbase模式
使用 filetoblob, filetoclob函数插入
dbaccess进入默认为gbase模式,也可以使用 set environment sqlmode ‘gbase’; 设置gbase模式
vi blob.txt
010101001
vi clob.txt
abcdefg
insert into test values(1, filetoblob('blob.txt','client'), filetoclob('clob.txt', 'client'));
> create table test(id int, col1 blob, col2 clob);
Table created.
> insert into test values(1, filetoblob('blob.txt','client'), filetoclob('clob.txt', 'client'));
1 row(s) inserted.
> select * from test;
id 1
col1 <SBlob Data>
col2
abcdefg
1 row(s) retrieved.
oracle模式
无需使用函数,直接插入
set environment sqlmode 'oracle';
insert into test values(1, 'abc', 'abc');
> set environment sqlmode 'oracle';
Environment set.
> create table test(id int, col1 blob, col2 clob);
Table created.
> insert into test values(1, 'abc', 'abc');
1 row(s) inserted.
> select * from test;
ID 1
COL1 <SBlob Data>
COL2
abc
1 row(s) retrieved.
注:以上数据库使用版本:GBase8sV8.8_3.5.1
GBase 8s的大对象处理功能为用户提供了强大的数据存储和管理工具。通过本文的详细介绍,用户应能更深入地理解GBase 8s在处理大规模文本和二进制数据方面的能力。我们期望本文能帮助用户更高效地利用GBase 8s,实现数据的优化管理和应用创新。
原文链接:https://www.gbase.cn/community/post/4141
更多精彩内容尽在南大通用GBase技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。
版权归原作者 GBASE数据库 所有, 如有侵权,请联系我们删除。