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