2011-01-05 29 views
9

मैं हाल ही में PostgreSQL के साथ खेल रहा हूं, और मुझे एक तालिका को बैकअप और पुनर्स्थापित करने के तरीके को समझने में परेशानी हो रही है।pg_dump तालिका अनुक्रम को अनदेखा कर रहा है?

मैंने अपने डेटाबेस में एक ही तालिका का बैकअप लेने के लिए pgadmin3 का उपयोग किया, ताकि इसे किसी भिन्न सर्वर पर कॉपी किया जा सके। जब मैं फ़ाइल पर एक pg_restore करने की कोशिश, मैं त्रुटि संदेश कह रही है कि अनुक्रम मौजूद नहीं है मिलती है:

pg_restore: [archiver (db)] could not execute query: ERROR: relation "businesses_id_seq" does not exist 
    Command was: 
CREATE TABLE businesses (
    id integer DEFAULT nextval('businesses_id_seq'::regclass) NOT NULL, 
    name character varyin... 

यह डंप फ़ाइल की तरह दिखता है मेरी ऑटो स्तंभ incrementing के लिए अनुक्रम शामिल नहीं किया। मैं इसे शामिल करने के लिए कैसे प्राप्त करूं?

उत्तर

12

केवल तालिका द्वारा डंपिंग - केवल तालिका को डंप करेगा। तालिका के अलावा आपको अनुक्रम को अलग-अलग डंप करने की आवश्यकता है।

यदि आप अपने अनुक्रम को नहीं जानते हैं तो आप psql में \d yourtable के साथ इसे सूचीबद्ध कर सकते हैं। आपको लगता है कि तरह लग रहा है पर अपने अनुक्रम है पंक्ति में कुछ देखेंगे: nextval('yourtable_id_seq'::regclass')

कमांड लाइन से फिर

, pgdump -t yourtable_id_seq

http://www.postgresql.org/docs/9.0/static/app-pgdump.html

+0

अगर मैं वें आयकर ध्वज के बाद एक अल्पविराम निर्दिष्ट कर सकते हैं आप जानते हैं? इस तरह: pgdump -t mytable, mytabl_id_seq – demersus

+0

नहीं, लेकिन आप एकाधिक-स्विच स्विच कर सकते हैं। इस तरह: pgdump -t mytable -t mytabl_id_seq – phord

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