當前位置:
首頁 >
postgresql中自定义函数脚本的备份及恢复
發布時間:2025/5/22
26
豆豆
生活随笔
收集整理的這篇文章主要介紹了
postgresql中自定义函数脚本的备份及恢复
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
【轉自 housonglin1213 的博客】http://blog.csdn.net/housonglin1213/article/details/51005540
1、自定義函數腳本備份
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 --判斷臨時表是否已經存在 select count(*) into isexisted from pg_class where relname = 'function_sql_table'; --如果已經存在則刪除 IF(isexisted !=0)THEN DROP TABLE function_sql_table; END IF; --創建臨時表-用于存儲函數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數據庫服務所在服務器的目錄中的。smartsys為數據庫用戶名。
注:pg_get_functiondef(oid_var)方法返回text類型自帶換行(效果如下圖,需要縱向拉伸才能看到全部信息)
2、已備份自定義函數腳本的恢復
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 --判斷臨時表是否已經存在 select count(*) into isexisted from pg_class where relname = 'function_sql_table'; --如果已經存在則刪除 IF(isexisted !=0)THEN DROP TABLE function_sql_table; END IF; --創建臨時表-用于存儲函數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;其中該方法中的參數:func_name為函數名稱,即:指定要恢復的函數。
【本文系轉載,版權歸原作者 housonglin1213 所有】
http://blog.csdn.net/housonglin1213/article/details/51005540
總結
以上是生活随笔為你收集整理的postgresql中自定义函数脚本的备份及恢复的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 360借条有没有宽限期
- 下一篇: 分段查询