Gbase8s之Blob
GBase 8s 支持 BLOB(Binary Large Object)数据类型,用于存储二进制大对象,如图像、音频或程序模块。BLOB 数据以智能大对象形式存储,支持随机访问,最大理论大小为 4TB(2^42 字节),实际大小受系统资源限制。1 智能大对象存储在专用的智能大对象空间中,分配的最小磁盘空间为 512 字节。1
主要特性
存储与访问:BLOB 存储二进制数据,数据库服务器不对内容进行解释。支持随机存取,允许像操作系统文件一样查找和读取数据。1
操作函数:GBase 8s 提供 SQL 函数用于 BLOB 操作,如
FILETOBLOB(将文件复制到 BLOB 列)、LOTOFILE(将 BLOB 值复制到文件)和LOCOPY(复制 BLOB 值到新对象)。12插入数据:可通过多种方式插入 BLOB 数据,包括使用
dbload或onload实用程序、LOAD语句(DB-Access)、FILETOBLOB函数,或通过 ESQL/C 中的ifx_lo_t主变量。13
操作示例
创建表:定义包含 BLOB 列的表结构,例如:
sqlCopy Code
createtabletab1 (col1integer, col2blob) extent size16next size64lock moderow;插入数据:使用
FILETOBLOB函数从文件插入 BLOB 数据:服务器端插入:
insert into tab1 values (1, filetoblob('/home/gbasedbt/blobtest.png', 'server'));客户端插入类似,但需确保文件路径可访问。2
查询和导出:使用
LOTOFILE将 BLOB 数据复制到文件:sqlCopy Code
selectlotofile(col2,'/home/gbasedbt/blobtest2.png','server')fromtab1wherecol1 =1;复制数据:使用
LOCOPY将 BLOB 值复制到另一列:sqlCopy Code
updatetab2setcol4 = (selectlocopy(col2)fromtab1wherecol1 =1)wherecol3 =1;
注意事项
简单 vs. 智能大对象:GBase 8s 区分简单大对象(如 BYTE/TEXT)和智能大对象(BLOB/CLOB)。简单大对象不支持随机存取,传输时需完整复制;智能大对象支持随机访问,但更新或删除时可能涉及日志管理,例如 blobpages 在逻辑日志备份前不会被释放。14
ODBC 接口:通过 ODBC 操作 BLOB 时,需设置连接属性
SQL_INFX_ATTR_LO_AUTOMATIC为TRUE,并使用标准 ODBC API(如SQLBindParameter和SQLBindCol)处理参数绑定和结果集提取。5
以上内容基于 GBase 8s 的常见用法,具体实现可能因版本或配置而异。
评论
热门帖子
- 12025-12-01浏览数:182762
- 22023-05-09浏览数:25056
- 42023-09-25浏览数:18525
- 52020-05-11浏览数:17528