1. 程式人生 > 其它 >KingbaseES blob 型別資料匯入匯出

KingbaseES blob 型別資料匯入匯出

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段需要指定一個對應的檔案。