postgresql中自定义函数脚本的备份及恢复
生活随笔
收集整理的這篇文章主要介紹了
postgresql中自定义函数脚本的备份及恢复
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
【轉(zhuǎn)自 housonglin1213 的博客】http://blog.csdn.net/housonglin1213/article/details/51005540
1、自定義函數(shù)腳本備份
CREATE OR REPLACE FUNCTION function_sql_dump() RETURNS void AS $BODY$ DECLARE my_cur refcursor; isexisted integer:=0; oid_var oid; role_oid oid; BEGIN --判斷臨時表是否已經(jīng)存在 select count(*) into isexisted from pg_class where relname = 'function_sql_table'; --如果已經(jīng)存在則刪除 IF(isexisted !=0)THEN DROP TABLE function_sql_table; END IF; --創(chuàng)建臨時表-用于存儲函數(shù)sql語句 CREATE TABLE function_sql_table(t TEXT); select oid into role_oid from pg_roles where rolname='smartsys'; IF role_oid is null THEN return; END IF; OPEN my_cur FOR select oid from pg_proc where proowner=role_oid order by oid; LOOP FETCH my_cur INTO oid_var; IF NOT FOUND THEN EXIT; END IF; INSERT INTO function_sql_table(t) VALUES (pg_get_functiondef(oid_var)); END LOOP; CLOSE my_cur; COPY function_sql_table TO 'D:/PostgreSQL/9.5/function_sql_bak.sql'; end $BODY$ LANGUAGE plpgsql VOLATILE COST 100; ALTER FUNCTION function_sql_dump() OWNER TO smartsys;補充說明:備份出的sql文件是存儲于postgresql數(shù)據(jù)庫服務(wù)所在服務(wù)器的目錄中的。smartsys為數(shù)據(jù)庫用戶名。
注:pg_get_functiondef(oid_var)方法返回text類型自帶換行(效果如下圖,需要縱向拉伸才能看到全部信息)
2、已備份自定義函數(shù)腳本的恢復(fù)
CREATE OR REPLACE FUNCTION function_sql_restore(func_name character varying) RETURNS void AS $BODY$ DECLARE my_cur refcursor; isexisted integer:=0; oid_var oid; sql_str text; sql_var varchar(1024); BEGIN --判斷臨時表是否已經(jīng)存在 select count(*) into isexisted from pg_class where relname = 'function_sql_table'; --如果已經(jīng)存在則刪除 IF(isexisted !=0)THEN DROP TABLE function_sql_table; END IF; --創(chuàng)建臨時表-用于存儲函數(shù)sql語句 CREATE TABLE function_sql_table(t TEXT); COPY function_sql_table from 'D:/PostgreSQL/9.5/function_sql_bak.sql'; IF(func_name is not null)THEN OPEN my_cur FOR select t from function_sql_table where t like '%'||func_name||'%'; ELSE OPEN my_cur FOR select t from function_sql_table; END IF; LOOP FETCH my_cur INTO sql_str; IF NOT FOUND THEN EXIT; END IF; execute sql_str; END LOOP; CLOSE my_cur; end $BODY$ LANGUAGE plpgsql VOLATILE COST 100;其中該方法中的參數(shù):func_name為函數(shù)名稱,即:指定要恢復(fù)的函數(shù)。
【本文系轉(zhuǎn)載,版權(quán)歸原作者 housonglin1213 所有】
http://blog.csdn.net/housonglin1213/article/details/51005540
總結(jié)
以上是生活随笔為你收集整理的postgresql中自定义函数脚本的备份及恢复的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 360借条有没有宽限期
- 下一篇: 分段查询