数据库对大对象(LOB)的处理能力直接影响到数据存储的效率和便捷性。国产数据库GBase 8s系统提供了对简单大对象智能大对象的全面支持。本文将探讨GBase 8s中大对象的存储方式和插入方法,帮助用户更高效地管理大规模文本和二进制数据。

1. 简单大对象的存储

  • TEXT

存储所有类型的文本数据。它可以同时包含语言环境支持的单字节字符和多字节字符。

  • BYTE

以无差别字节流的形式存储任何种类的二进制数据。二进制数据通常由数字化的信息(如:电子表格、程序装入模块和数字化声音模式等等)组成。

数据库服务器直接地从 LOAD FROM 文件装入简单大对象(BYTE 和 TEXT 列)。LOAD语法图如下图所示:

南大通用GBase 8s大对象处理:简化大数据插入与管理_二进制数

在您装入 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’;

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,实现数据的优化管理和应用创新。