2016-05-04 8 views
8

(PostgreSQL) 9.4.4pg_restore दौरान टेबल को शामिल न करें

किसी को भी पता है जब एक pg_restore कर एक मेज बहिष्कृत करने का तरीका? pg_dump करते समय मैं इसे कैसे कर सकता हूं। हालांकि मैं डंप नहीं कर रहा हूं और उन्हें बाहर नहीं कर सकता।

डंप कि वास्तव में बड़े हैं और हमेशा के लिए ले जब मैं एक तो मैं उन्हें छोड़ना चाहते पुनर्स्थापित करूँ में 2 टेबल रहे हैं।

उत्तर

3

pg_restore एक को बाहर तालिका पैरामीटर नहीं होता है, यह क्या है एक मेज पैरामीटर शामिल है।

आयकर तालिका

--table = तालिका

परिभाषा और/या नामित तालिका केवल के डेटा को पुनर्स्थापित करें। एकाधिक-टेबल स्विच के साथ एकाधिक तालिकाओं को निर्दिष्ट किया जा सकता है। यह को स्कीमा निर्दिष्ट करने के लिए -n विकल्प के साथ जोड़ा जा सकता है।

यदि आपके पास बड़ी संख्या में टेबल हैं तो यह टाइपिंग बिट के लिए कॉल करता है, लेकिन यह आपको सूची के बाहर अपने नाम छोड़कर विशिष्ट तालिकाओं को बाहर करने की अनुमति देता है।

+1

धन्यवाद। हाँ हमारे पास बहुत सारी टेबल हैं लेकिन मैं इसे स्वचालित करने के लिए एक रेक कार्य कर रहा हूं इसलिए मुझे इसे एक बार करना होगा। टेबल पर लूप हो सकता है और 2 टेबल की एक बहिष्कृत सूची है। – covard

17

मैं एक ही समस्या थी। एक लंबी तालिका सूची, और मैं कुछ तालिकाओं से डेटा को बाहर करना चाहता हूं।

भागो

pg_restore -l $pgdump_file > restore.pgdump.list 

ओपन कि एक संपादक में restore.pgdump.list फ़ाइल, और

;2429; 0 27550 TABLE DATA public <table_to_explore> <database> 

कह सहेजने के बाद लाइन के सामने एक ; सम्मिलित करें:

मैं क्या निम्नलिखित था वह फ़ाइल, अब इसका आयात करने के लिए उपयोग की जा सकती है, जहां ; से शुरू होने वाली सभी लाइनों को अनदेखा किया जाता है।

pg_restore -L restore.pgdump.list | psql 

आप एक विशिष्ट तालिका नाम होने लाइनों के सामने ; जोड़ने के लिए एक एक लाइनर, अगर आप पूरी तरह से एक विशिष्ट तालिका अनदेखा करना चाहते हो सकता है।

man pg_restore दस्तावेज़ीकरण के अंत में एक उदाहरण में इसके बारे में भी बता रहा है।

+0

धन्यवाद, जीवन बचतकर्ता क्या है! के रूप में 'आदमी pg_restore' में बताया गया है, एक बार आप' restore.pgdump.list' फ़ाइल संपादित किया है (अपने उदाहरण से), आप 'कॉल कर सकते हैं pg_restore एल db.list db.dump' (अपने उदाहरण में, आप कॉल 'pg_restore' और इसे 'psql' पर पाइप करें - हालांकि, आप डंप फ़ाइल के पथ को निर्दिष्ट नहीं करते हैं ..?) –

+0

ध्यान दें कि इससे मुझे बचाया गया क्योंकि मैं 99 टेबल की सूची से 2 टेबल को बाहर करने का प्रयास कर रहा था आयात किया। 'Pg_restore' तालिकाओं को निर्दिष्ट आयात के दौरान बाहर करने के लिए करने की अनुमति नहीं है, इसलिए मैं इसे कहते हैं था:' pg_restore आयकर a_table आयकर another_table आयकर yet_another_table', आदि यह कॉल करने के लिए प्रयास कर रहा है 97 '-t' तर्क के साथ एक साथ तोड़ दिया "बहुत सारे तर्क" संदेश ... :-) आपके 'restore.pgdump.list' समाधान ने काम किया !! –

+0

यह बहुत उपयोगी था! मुझे केवल एक तालिका से डेटा को बाहर करने की आवश्यकता है: 'रिपोर्ट'।सूची सूची बनाते समय मैं एक इनलाइन 'grep -v' करने में सक्षम था। '' pg_restore -l $ pgdump_file | grep -v "टेबल डेटा सार्वजनिक रिपोर्ट"> restore.pgdump.list''' –

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