KingbaseES blob 类型数据导入导出

2022-11-22,,,,

KingbaseES兼容了oracle的blob数据类型。通常是用来保存二进制形式的大数据,也可以用来保存其他类型的数据。

下面来验证一下各种数据存储在数据库中形式。

建表

create table t1 (id number, file blob);

插入数据

insert into t1 values (1,''',\\as123哈哈');

insert into t1 values (2,blob_import('/home/kbc5/ksql.log'));

insert into t1 values (3,blob_import('/home/kbc5/tp.gif'));

查看数据

可以看出英文,数字,符号未做转换直接存入数据库中,中文,文件,图片转换为不可读内容存放在数据库中。

那是否有方法可以读取原本可读的数据内容呢?

可以通过

1.convert_from 函数将数据翻译为可读内容(图片除外)。

2.blob_export 函数将blob的内容导出到本地进行读取。

test=# select convert_from(file,'utf8') from t1 ;

错误: 无效的 "UTF8" 编码字节顺序: 0xff

test=# select id, convert_from(file,'utf8') from t1 where id <> 3;

id | convert_from

----+----------------------------------------

1 | ',\as123哈哈

2 | 错误: 语法错误 在 "5" 或附近的 +

| 第1行insert into t2values (5,'xarte');+

| ^ +

|

(2 行记录)

上面的结果可以看出图片无法被转换,而文本文件则会将具体内容转义出来。

test=# select blob_export(file,'/home/kbc5/dc1.gif') from t1 where id = 3;

blob_export


        1

(1 行记录)

函数执行结果1表示成功。进入目录查看文件:

()

可以看到2个文件一样大。

test=# select blob_export(file,'/home/kbc5/dc2.txt') from t1 where id <> 3;

blob_export


          1
1

(2 行记录)

进入目录看到只有一个dc2.txt文件,说明后面一行导出的文件会将前一行导出的文件覆盖。

所以使用该函数进行操作时1个blob段需要指定一个对应的文件。

KingbaseES blob 类型数据导入导出的相关教程结束。

《KingbaseES blob 类型数据导入导出.doc》

下载本文的Word格式文档,以方便收藏与打印。