1、Windows下postgresql的插件安裝
所有的插件都是通過源代碼編譯的 ,在window上需要自己用msvc去編譯,在linux用 gcc
安裝步驟:
首先,你得在你Windows上安裝postgresql
https://www.enterprisedb.com/downloads/postgres-postgresql-downloads#windows
選擇一個版本安裝,這裏需要注意,安裝完後會跳出下面頁面:
點擊下一步,勾選下圖選項,這是安裝語言所需要的
安裝完成,修改pg_hba.conf 以及postgresql.conf,修改完配置文件,重啓一下服務
1.1、下載和安裝PostgreSQL相對應的plv8版本,下載地址如下:
http://www.postgresonline.com//downloads/pg10plv8jsbin_w64.zip
1.解壓後:
2.將bin、lib、share文件夾下文件分別複製到PostgreSQL的相對應的安裝目錄下:
3.打開PostgreSQL SQL編輯器,執行下列sql語句:
CREATE EXTENSION plv8;
CREATE EXTENSION plls;
CREATE EXTENSION plcoffee;
CREATE OR REPLACE FUNCTION upsert_inventory(param_inv json) RETURNS
text AS $$
var o = JSON.parse(param_inv);
/** update plan **/
var uplan = plv8.prepare('UPDATE inventory SET prod_name = $1, loc_id = $2 WHERE prod_code = $3', ['text', 'int', 'text'] );
/** insert plan **/
var iplan = plv8.prepare('INSERT INTO inventory( prod_name, loc_id, prod_code) VALUES($1, $2, $3)', ['text', 'int', 'text'] );
var num_changed;
var num_ins = 0, num_upd = 0;
if (typeof o != 'object')
return NULL;
else {
for(var i=0; i<o.length; i++){
num_changed = uplan.execute([o[i].prod_name, o[i].loc_id, o[i].prod_code]);
num_upd += num_changed;
if (num_changed == 0){ /** we got no updates, so insert **/
num_changed = iplan.execute([o[i].prod_name, o[i].loc_id, o[i].prod_code]);
num_ins += num_changed;
}
}
}
iplan.free();
uplan.free();
return num_upd + ' record(s) updated and ' + num_ins + ' records inserted';
$$ LANGUAGE plv8 VOLATILE;
安裝PostgreSQL的plv8插件成功!
1.2、下載和安裝PostgreSQL相對應的plpython3u插件
1.下載地址如下(因爲我的postgresql的版本是10.3-2,故對應的Python版本應爲3.4):
https://www.python.org/ftp/python/3.4.0/python-3.4.0.amd64.msi
2.安裝好後,打開PostgreSQL SQL編輯器,執行下列sql語句:
CREATE extension plpython3u;
3.查看安裝後的插件:
SELECT * from pg_extension;
postgresql增加plpython3u編程語言 centos7環境:
請參考https://blog.csdn.net/weixin_43198168/article/details/86644629