2012-05-14 11 views
18

से सभी फ़ंक्शंस ड्रॉप करें मेरे पास इसमें पोस्टगिस के पुराने पुराने संस्करण के साथ डेटाबेस है। मैं डेटाबेस में सभी कार्यों को आसानी से छोड़ना चाहता हूं (वे सभी पोस्टजीआईएस से हैं)। क्या ऐसा करने के लिए एक सरल तरीका है? यहां तक ​​कि फ़ंक्शन नामों की सूची निकालने के लिए भी स्वीकार्य होगा क्योंकि मैं केवल DROP FUNCTION कथन बना सकता हूं।पोस्टग्रेस डेटाबेस

उत्तर

25

एक fine answer to this question can be found here:

SELECT 'DROP FUNCTION ' || ns.nspname || '.' || proname 
     || '(' || oidvectortypes(proargtypes) || ');' 
FROM pg_proc INNER JOIN pg_namespace ns ON (pg_proc.pronamespace = ns.oid) 
WHERE ns.nspname = 'my_messed_up_schema' order by proname; 
+1

अक्सर, 'ms.nspname = 'public'' लागू होता है। – Drux

+0

उपर्युक्त एसक्यूएल कम केस पर नहीं होगा या अल्फान्यूमेरिक फ़ंक्शन/स्कीमा नाम नहीं होगा। एसक्यूएल पहचानकर्ताओं को सही तरीके से उद्धृत करने के लिए बेहतर उपयोग quote_ident या प्रारूप ('ड्रॉप फ़ंक्शन% I.% I (% s);', nspname, proname, oidvectortypes (proargtypes))। –

3

बस के रूप में वहाँ एक postgis.sql enabler install script था, वहाँ भी एक uninstall_postgis.sql स्थापना रद्द स्क्रिप्ट है।

psql -d [yourdatabase] -f /path/to/uninstall_postgis.sql 

चेतावनी: अपनी ज्यामिति/भूगोल कॉलम और डेटा गायब होने के लिए तैयार रहें!

संबंधित मुद्दे