इनपुट फ़ाइल एक पाठ प्रारूप डंप प्रतीत होती है। कृपया psql का उपयोग करें


95

मैं उपयोग करके बैकअप लेता हूं

pg_dump db_production > postgres_db.dump

और फिर मैं इसे scp का उपयोग करके लोकलहोस्ट पर कॉपी करता हूं।

अब जब मैं अपने स्थानीय db पर आयात करता हूं तो यह एक त्रुटि देता है

pg_restore: [archiver] input file appears to be a text format dump. Please use psql.

commad लाइन का उपयोग करके

pg_restore -d db_development postgres_db.dump

जवाबों:


138

से pg_dumpप्रलेखन:

उदाहरण

Mydb नामक डेटाबेस को SQL-स्क्रिप्ट फ़ाइल में डंप करने के लिए :

$ pg_dump mydb > db.sql

ऐसी स्क्रिप्ट को नए सिरे से बनाए गए डेटाबेस (नए सिरे से बनाए गए) डेटाबेस में पुनः लोड करने के लिए :

$ psql -d newdb -f db.sql

डेटाबेस को कस्टम-प्रारूप संग्रह फ़ाइल में डंप करने के लिए:

$ pg_dump -Fc mydb > db.dump

डेटाबेस को निर्देशिका-प्रारूप संग्रह में डंप करने के लिए:

$ pg_dump -Fd mydb -f dumpdir

एक newdb नाम के डेटाबेस (हौसले से बनाई गई) डेटाबेस में एक पुरालेख फ़ाइल को फिर से लोड करने के लिए:

$ pg_restore -d newdb db.dump

से pg_restoreप्रलेखन:

उदाहरण

मान लें कि हमने mydb नामक डेटाबेस को कस्टम-प्रारूप डंप फ़ाइल में डंप कर दिया है:

$ pg_dump -Fc mydb > db.dump

डेटाबेस को छोड़ने और डंप से इसे फिर से बनाने के लिए:

$ dropdb mydb
$ pg_restore -C -d postgres db.dump

2
जब मैं pg_restore प्राप्त करता हूं तो मुझे pg_restore मिलता है: [संग्रहकर्ता] इनपुट फ़ाइल एक पाठ प्रारूप डंप प्रतीत होती है। कृपया psql का उपयोग करें।
हसीब अहमद

डीबी को पुनर्स्थापित करने के लिए मैं किसका उपयोग करता हूं?
हसीब अहमद

76
यह प्रश्न का उत्तर नहीं देता है
डोपाट्रमण

1
एक तरह से एक पाठ फ़ाइल चेकआउट से बहाल करने के लिए के लिए serverfault.com/questions/260607/...
chrs

7
IMO इस पोस्ट में थोड़ा बहुत विवरण है जो उत्तर को बाधित करता है। लेखक क्या इंगित करने में विफल रहा है कि '-F' पैरामीटर के लिए pg_dump प्रलेखन डिफ़ॉल्ट प्रारूप ('p' / 'सादा') को pg_restore के लिए उपयुक्त नहीं कहता है। pg_restore के लिए आवश्यक है कि pg_dump को 'c', 'd', या 't' प्रारूपों के साथ प्रयोग किया जाए।
मैट


14

मेरे लिए जब मैं उपयोग किए गए दूरस्थ होस्ट से पुनर्स्थापित करने का प्रयास करता हूं

psql -U username -p 5432 -h 10.10.10.1 -d database < db.dump

ठीक काम किया। और अगर रिमोट नहीं बस निम्नलिखित कमांड काम किया है।

psql -d database < db.dump

9

आपके pg_dumpद्वारा संगत बैकअप का उपयोग करने के लिए pg_restoreआपको अपने डंप का निर्माण करते समय --format=custom/ का उपयोग करना होगा -Fc

डॉक्स से:

Pg_restore में इनपुट के लिए उपयुक्त एक कस्टम-प्रारूप संग्रह आउटपुट करें।

तो आपका pg_dumpआदेश ऐसा लग सकता है:

pg_dump --file /tmp/db.dump --format=custom --host localhost --dbname my-source-database --username my-username --password

और आपकी pg_restoreआज्ञा:

pg_restore --verbose --clean --no-acl --no-owner --host localhost --dbname my-destination-database /tmp/db.dump


1

यदि आप pg_dump का उपयोग करते हैं, तो सादे पाठ प्रारूप में बैकअप के लिए, निम्नलिखित कमांड का उपयोग करें:

cat db.txt | psql dbname

नाम के साथ अपने डेटाबेस के लिए सभी डेटा की प्रतिलिपि बनाएँ


0

यदि आपके पास एक पूर्ण DB डंप है:

PGPASSWORD="your_pass" psql -h "your_host" -U "your_user" -d "your_database" -f backup.sql

यदि आपके पास स्कीमा अलग से रखे गए हैं, हालांकि, यह काम नहीं करेगा। फिर आपको डेटा सम्मिलन के लिए ट्रिगर को अक्षम करने की आवश्यकता होगी, इसके लिए समान है pg_restore --disable-triggers। फिर आप इसका उपयोग कर सकते हैं:

cat database_data_only.gzip | gunzip | PGPASSWORD="your_pass" psql -h "your_host" -U root "your_database" -c 'SET session_replication_role = replica;' -f /dev/stdin

एक साइड नोट पर, यह पोस्टग्रेज का बहुत दुर्भाग्यपूर्ण नकारात्मक पहलू है, मुझे लगता है। इसमें डंप बनाने का डिफ़ॉल्ट तरीका pg_dumpअसंगत है pg_restore। कुछ अतिरिक्त कुंजियों के साथ, हालांकि, यह है। WTF?

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.