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


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.