postgresql 大物件 三 檔案上傳例子

2022-04-09 07:32:42 字數 917 閱讀 1261

postgresql有一客戶端函式lo_import, 封裝在libpq, 功能是將客戶端的檔案上傳到伺服器的大物件中, 這個函式其實是呼叫lo_open, lowrite等服務端函式封裝而成.現在我們在其他環境下模仿這個例子.

用偽語言,大家可轉換為自己的語言.

偽函式sql(...) 是傳送sql命令的語句

getsqlresult(...) 是獲取sql結果的語句

身略了錯誤判斷,請大家自己完善.  

function lo_import(string localfile, oid loid ) return integer

else

new_loid = loid 

sql("begin transaction")     // 開啟一事務

sql("select lo_open(?new_loid, 393216) as result")

fd_oid=getsqlresult("result")      // 獲取開啟的控制代碼;

if(loid <> -1)

fd_localfile=fopen(localfile); // 開啟本地檔案

while (l_buf=fread(fd_localfile, 1024) ) // 迴圈讀取1024個位元組

fclose(fd_localfile); // 關掉本地檔案

sql("select lo_close(?fd_oid)"); // 關閉大物件

sql("commit");

}關鍵語句為select lowrite(?fd_oid, ?l_buf)

如果你的介面無法上傳二進位制資料, 請將l_buf轉化為8進製的字串序列ll_buf,再執行select lowerite(?fd_oid, cast(?ll_buf as bytea))

至於如何轉化,請看我的另一編  

內建物件 三大物件模型

延展內建函式eval 和isnan eval 用於計算字串表示式的值 isnan 檢查其引數是否是非數字值,true false 瀏覽器視窗window 方法 open 開啟新的視窗 close 關閉當前的視窗 open 開啟視窗的url 視窗名,視窗特徵 屬性 close 關閉當前的視窗 文件do...

物件導向三大特性

什麼是物件導向呢?之前我們做一件事的時候,常常是確定,先幹什麼,然後怎麼做,最後可以完事了。其實我們不妨這麼想一下,我們做事的時候是可以這樣的 這件事中涉及了什麼物件角色?如果我要把這件事做成那麼就需要物件之間是如何協作的?第二種方法,就是今天說的物件導向的方法了,好處正在慢慢體會。今天我想說的物件...

物件導向三大特性

0x00 嘮嘮叨叨 只是做乙個概念的記錄 0x01 物件導向的三大特性 n 封裝 把客觀事物封裝成抽象的類,並且類可以把自己的資料和方法只讓可信的類或者物件操作,對不可信的進行資訊隱藏。類將成員變數和成員函式封裝在類的內部,根據需要設定訪問許可權,通過成員函式管理內部狀態。n 繼承 繼承所表達的是類...