ইনপুট ফাইলটি একটি পাঠ্য বিন্যাসের ডাম্প বলে মনে হচ্ছে। দয়া করে পিএসকিএল ব্যবহার করুন


95

ব্যবহার করে ব্যাকআপ নিই

pg_dump db_production > postgres_db.dump

এবং তারপরে আমি এটিকে scp ব্যবহার করে লোকালহোস্টে অনুলিপি করি।

এখন আমি যখন আমার স্থানীয় ডিবিতে আমদানি করি তখন এটি একটি ত্রুটি দেয়

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

কমড লাইন ব্যবহার করে

pg_restore -d db_development postgres_db.dump

উত্তর:


138

pg_dumpডকুমেন্টেশন থেকে :

উদাহরণ

একটি এসকিউএল-স্ক্রিপ্ট ফাইলে মাইডিবি নামে একটি ডেটাবেস ডাম্প করতে :

$ pg_dump mydb > db.sql

Newdb নামের একটি (নতুনভাবে তৈরি করা) ডাটাবেসে এই জাতীয় স্ক্রিপ্টটি পুনরায় লোড করতে :

$ 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ডকুমেন্টেশন থেকে :

উদাহরণ

ধরুন আমরা কাস্টম-ফর্ম্যাট ডাম্প ফাইলে মাইডিবি নামে একটি ডাটাবেস ফেলেছি:

$ pg_dump -Fc mydb > db.dump

ডাটাবেসটি ফেলে দিতে এবং এটিকে ডাম্প থেকে পুনরায় তৈরি করতে:

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

4
আমি যখন পিজি_স্টোর করি তখন আমি পিজিস্টেস্টর পাই: [আর্কিভার] ইনপুট ফাইলটি একটি পাঠ্য বিন্যাসের ডাম্প বলে মনে হয়। দয়া করে পিএসকিএল ব্যবহার করুন।
— হাসিব আহমদ

আমি কোনটি ডিবি পুনরুদ্ধার করতে ব্যবহার করব?
— হাসিব আহমদ

76
এটি প্রশ্নের উত্তর দেয় না
— দোপাত্রমন

4
একটি পাঠ্য ফাইল চেকআউট থেকে পুনরুদ্ধারের উপায়ের জন্য সার্ভারসফল্ট
— প্রশ্নগুলি /

7
আইএমও এই পোস্টটিতে কিছুটা বিশদ রয়েছে যা উত্তরটি বিস্মৃত করে। লেখক যে বিষয়টি উল্লেখ করতে ব্যর্থ হয়েছেন তা হ'ল '-F' প্যারামিটারের জন্য pg_dump ডকুমেন্টেশনটি ডিফল্ট ফর্ম্যাট ('p' / 'প্লেইন') pg_restore- এর জন্য উপযুক্ত নয় বলে দেয়। pg_restore দরকার যে pg_dump 'c', 'd', বা 't' ফর্ম্যাটের সাথে ব্যবহার করা উচিত।
— ম্যাট 16


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

6

আমার জন্য, এটি এই মত কাজ করছে। সি: \ প্রোগ্রাম ফাইলসমূহ \ পোস্টগ্রেএসকিউএল \ 12 \ বিন> পিএসকিএল-ইউ পোস্টগ্রাস -p 5432-ডি ডামি -f সি: \ ব্যবহারকারীগণ ডাউনলোডগুলি \ d2cm_test.sql


4
সহজ এবং সহায়ক উত্তর!
— রাক্স ওয়েবার

4
ধন্যবাদ @ আরজনিষ যাদব।
— অমিত

1

আপনি যদি সরল পাঠ্য বিন্যাসে ব্যাকআপ নিতে -Fp এর সাথে pg_dump ব্যবহার করেন তবে নিম্নলিখিত কমান্ডটি ব্যবহার করুন:

cat db.txt | psql dbname

নামের সাথে আপনার ডেটাবেজে সমস্ত ডেটা অনুলিপি করতে


0

আপনার যদি সম্পূর্ণ ডিবি ডাম্প থাকে:

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। কিছু অতিরিক্ত কীগুলির সাথে, তবে এটি। ডাব্লুটিএফ?

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.