2014-03-07 45 views
0

有沒有辦法從第一個數據庫獲取所有存儲過程並將其傳輸到第二個創建數據庫腳本的過程? (不使用pgAdmin的或類似的東西)Posgresql存儲過程傳輸

+0

可能使用'pg_dump'和'--section = post-data --schema-only'選項。 –

回答

1

如果你真的只在功能感興趣,您可以查詢pg_proc目錄,並抓住給定模式的CREATE FUNCTION語句(假設public):

$ psql -AXtqc "SELECT pg_get_functiondef(oid)||';' FROM pg_proc p WHERE p.pronamespace = (SELECT oid FROM pg_namespace WHERE nspname = 'public')" your_first_database 

如果你真的只需要一個步驟:

$ psql -AXtqc "SELECT pg_get_functiondef(oid)||';' FROM pg_proc p WHERE p.pronamespace = (SELECT oid FROM pg_namespace WHERE nspname = 'public')" your_first_database | psql your_second_database 

這有利於一次性的任務,但對於最終的劇本不太好,因爲查詢可能會改變從一個版本到其他的PostgreSQL。另外,它考慮了由擴展創建的函數,就好像它們不是。