में फ़ंक्शंस का बैकअप लेने के लिए मैं अपने पोस्टग्रेज़ डेटाबेस में सभी कार्यों का बैकअप लेना चाहता हूं। केवल पोस्टग्रेस में फ़ंक्शंस का बैकअप लेने के लिए कैसे?केवल पोस्टग्रेस
उत्तर
pg_getfunctiondef
का उपयोग करें; system information functions देखें। pg_getfunctiondef
PostgreSQL 8.4 में जोड़ा गया था।
SELECT pg_get_functiondef('proc_name'::regproc);
एक स्कीमा आप pg_catalog
में सिस्टम टेबल क्वेरी कर सकता है में सभी कार्यों डंप करने के लिए; कहते हैं कि अगर आप public
से सब कुछ करना चाहता था:
SELECT pg_get_functiondef(f.oid)
FROM pg_catalog.pg_proc f
INNER JOIN pg_catalog.pg_namespace n ON (f.pronamespace = n.oid)
WHERE n.nspname = 'public';
यह बजाय अगर तुम क्या चाहते हो कि "pg_
के साथ शुरुआत को छोड़कर अन्य सभी स्कीमा से" कहने के लिए ऊपर बदलने के लिए तुच्छ है।
psql
में आप के साथ एक फ़ाइल को यह डंप कर सकते हैं:
psql -At dbname > /path/to/output/file.sql <<"__END__"
... the above SQL ...
__END__
एक और डीबी में उत्पादन चलाने के लिए, की तरह कुछ का उपयोग करें:
psql -1 -v ON_ERROR_STOP -f /path/to/output/file.sql target_db_name
आप की तरह डीबीएस के बीच कार्यों नकल कर रहे हैं हालांकि, एसवीएन या गिट जैसे संशोधन नियंत्रण प्रणाली में एसक्यूएल स्क्रिप्ट के रूप में फ़ंक्शन परिभाषाओं की आधिकारिक प्रति को संग्रहीत करने पर विचार करें, अधिमानतः पोस्टग्रेएसक्यूएल एक्सटेंशन के रूप में पैक किया गया है। packaging extensions देखें।
आप केवल फ़ंक्शन डंप करने के लिए pg_dump
नहीं बता सकते हैं। हालांकि, आप डेटा के बिना डंप कर सकते हैं (-s
) और इसे पुनर्स्थापित करने पर फ़िल्टर करें। -Fc
भाग पर ध्यान दें: यह pg_restore
के लिए उपयुक्त फ़ाइल तैयार करेगा।
पहले डंप ले:
pg_dump -U username -Fc -s -f dump_test your_database
फिर एक कार्यों की सूची बनाएं:
pg_restore -U username -d your_other_database -L function_list dump_test
:
pg_restore -l dump_test | grep FUNCTION > function_list
और अंत में उन्हें बहाल (-L
ऊपर बनाई गई सूची फ़ाइल निर्दिष्ट करता है)
शायद पहले दो आदेशों को 'pg_dump -U उपयोगकर्ता नाम-डेटाबेस में घटाया जा सकता है। grep फ़ंक्शन> function_list' – Minutis
@Minutis यह काम नहीं करेगा, जब तक कि फ़ंक्शन परिभाषाएं _all_ एक-लाइनर न हों। – dezso
बस इसे स्वयं करने की कोशिश की और पुष्टि कर सकते हैं कि मेरी पहली टिप्पणी में समाधान सही नहीं है। – Minutis
- 1. पोस्टग्रेस
- 2. पोस्टग्रेस
- 3. पोस्टग्रेस
- 4. पोस्टग्रेस
- 5. पोस्टग्रेस
- 6. पोस्टग्रेस
- 7. पोस्टग्रेस
- 8. पोस्टग्रेस
- 9. पोस्टग्रेस
- 10. पोस्टग्रेस
- 11. पोस्टग्रेस
- 12. पोस्टग्रेस डेटाबेस
- 13. पोस्टग्रेस हैस्टोर
- 14. पोस्टग्रेस डेटाबेस
- 15. पोस्टग्रेस ट्यूनिंग
- 16. पोस्टग्रेस LIKE
- 17. पोस्टग्रेस डीबी
- 18. पोस्टग्रेस 9
- 19. पोस्टग्रेस info_schema
- 20. पोस्टग्रेस बिटमैस्क
- 21. त्रुटि: पोस्टग्रेस
- 22. पोस्टग्रेस - लूप
- 23. नोड-पोस्टग्रेस
- 24. पोस्टग्रेस jdbc ड्राइवर
- 25. बहु-विभाजन पोस्टग्रेस तालिका
- 26. जेडीबीसी पोस्टग्रेस एक टाइमआउट
- 27. पोस्टग्रेस + हाइबरनेट + जावा यूयूआईडी
- 28. विफल पोस्टग्रेस/Psycopg2 copy_from
- 29. पोस्टग्रेस डेटा प्रकार कास्ट
- 30. पोस्टग्रेएसक्यूएल बनाम पोस्टग्रेस प्लस
इसके अलावा मैं इन कार्यों को किसी अन्य डीबी में पुनर्स्थापित करना चाहता हूं। मैं यह कैसे कर सकता हूं? कार्यों को केवल – vmb
@vmb को पुनर्स्थापित करने की आवश्यकता है आउटपुट SQL फ़ंक्शन परिभाषाएं है, इसलिए उन्हें psql में पाइप करें। अद्यतन उत्तर देखें। इससे भी बेहतर, एक एक्सटेंशन बनाएं और इसमें पैकेज करें। –
यह ध्यान दिया जाना चाहिए कि 'pg_get_functiondef (' proc_name ':: regproc) '** कार्य नहीं करता है ** फ़ंक्शन के विशेषाधिकारों को डंप करें (' GRANT' और' REVOKE' कथन) जिन्हें कभी-कभी फ़ंक्शन परिभाषा का हिस्सा माना जा सकता है। – NumberFour