我想在觸發器中進行修正,但是這個問題有200-300個例子 - 手動執行太多了。 Postgresql中是否有包含完整數據庫代碼的表,我可以在其中找到所有的定義並在同一時間更正它們?帶Postgresql中函數定義的系統表
這可能是初學者的問題(我知道在Oracle中有這樣的表,但我是Postgresql的新手),但我似乎無法在Web或我自己中找到它。
我想在觸發器中進行修正,但是這個問題有200-300個例子 - 手動執行太多了。 Postgresql中是否有包含完整數據庫代碼的表,我可以在其中找到所有的定義並在同一時間更正它們?帶Postgresql中函數定義的系統表
這可能是初學者的問題(我知道在Oracle中有這樣的表,但我是Postgresql的新手),但我似乎無法在Web或我自己中找到它。
包含postgres中所有過程定義的表格是pg_catalog.pg_proc
。
源代碼列爲prosrc
。
你可以這樣做:
select proname, prosrc from pg_proc where proname like '%doc%';
假設你有一個名爲DOC某些功能。
存儲過程pg_catalog.pg_get_functiondef
將返回特定函數的源代碼。你可以這樣做:
select pg_get_functiondef(oid) from pg_proc where proname='myfunction_name';
不幸的是,pg_get_functiondef
使用聚合函數內部 - 所以你不能在正在恢復不止一個函數的查詢調用pg_get_functiondef
。
已經使用了pg_dump的解決方法,但pg_proc表正是我一直在尋找的東西,在另一種情況下它肯定會很有用。感謝幫助。 – Hisu 2014-12-03 16:57:21
最簡單的方法是使用'pg_dump -U the_user --schema-only the_dbname >> textfile.sql',並使用文本文件的內容。文本文件將包含** all ** DDL,包括表,索引,視圖,函數,但是這些很容易從文本文件中刪除。 – wildplasser 2014-12-03 14:46:56
似乎有幫助。該文件在什麼目錄中顯示?似乎無法用'find -name'textfile *'找到它,但是在linux上工作時我並不真正有效 – Hisu 2014-12-03 14:59:08
沒有文件。輸出發送到stdout。 (在我的例子中,我用'>> textfile'將它重定向到了一個文件)還有一個'--file = FILENAME'選項/ flag給pg_dump命令 – wildplasser 2014-12-03 15:02:10