পোস্টগ্রিস ডাটাবেসে কীভাবে একটি একক টেবিলের ব্যাকআপ তৈরি করবেন?


160

পোস্টগ্রিজ ব্যবহার করে কোনও ডাটাবেসের মধ্যে একটি একক টেবিলের ব্যাকআপ তৈরি করার কোনও উপায় আছে কি? এবং কিভাবে? এটি কি pg_dump কমান্ড দিয়ে কাজ করে?

উত্তর:


211

এটিতে কোন টেবিলটির ব্যাকআপ রয়েছে তা --tableবলার জন্য ব্যবহার করুন pg_dump:

pg_dump --host localhost --port 5432 --username postgres --format plain --verbose --file "<abstract_file_path>" --table public.tablename dbname

9
এবং কীভাবে সেই ব্যাকআপ ফাইলটি পুনরুদ্ধার করবেন। (.backup), আমি ব্যবহৃত pg_restore --host localhost --port 5432 --username postgres --dbname "anydb" --table public.tablename -Ft --verbose "/path/filename.backup"কিন্তু এটি বের হয়ে এলpg_restore: [tar archiver] corrupt tar header found in --
অ্যান্ডারসন Dorregaray Linares আপনার

13
psql -U username -d database -1 -f your_dump.sql
rnaud

5
আপনি কী বলতে চাইছেন: বিমূর্ত_ ফাইল_পথ?
ব্যান্ডুঞ্জুয়

3
আমি নিশ্চিত নই কেন এই উত্তরটি কেন ভোট দিয়েছে, লোকেরা নিজেরাই জিনিসগুলি পরীক্ষা না করে বা চেষ্টা করেই +1 ক্লিক করে। এই উত্তরের সমস্যাটি এটি সম্পূর্ণরূপে অকেজো করে তোলে, প্রদত্ত সমাধান / কমান্ডগুলি সারণীতে (প্রাথমিক কী) তৈরি ক্রমগুলি রফতানি করে না এবং তাই আমদানি ব্যর্থ হয়। আমি এমন কোনও একক উত্পাদন পিজি ডাটাবেস সম্পর্কে অবগত নই যা সিকোয়েন্স সহ প্রাথমিক কীগুলি ব্যবহার করে না। এটি অর্ধেক উত্তর, প্রশ্নের পুরোপুরি উত্তর দিতে ব্যর্থ এবং একক টেবিল রফতানি / আমদানির জন্য অতিরিক্ত কাজ প্রয়োজন।
ব্যবহারকারী 10664542

1
এর থেকে কিছুটা আলাদা সুডো টুইস্ট করে আমি ফাইল ডাম্পের অনুমতি ত্রুটির সাথে শেষ করেছিলাম (যথেষ্ট লজিকাল যেহেতু ব্যবহারকারীর পোস্টগ্র্যাসগুলি আমার ডিরেক্টরিতে লেখার অ্যাক্সেস না রাখে) এবং এর জন্য আমার একটি অজানা ফ্ল্যাগ ত্রুটি ছিল --ignore-version। প্রশান্ত কুমারের উত্তর, যা সহজ, আমার পক্ষে কাজ করেছিল।
জেএল পেয়ারেট

84

আপনি যদি উবুন্টুতে থাকেন,

  1. আপনার পোস্টগ্রিজ ব্যবহারকারীকে লগইন করুন sudo su postgres
  2. pg_dump -d <database_name> -t <table_name> > file.sql

নিশ্চিত হয়ে নিন যে আপনি যে কমান্ডটি postgresলেখার অনুমতি পেয়েছেন সেখানে আদেশটি কার্যকর করা হচ্ছে (উদাহরণ /tmp:)

সম্পাদন করা

আপনি যদি অন্য কম্পিউটারে। এসকিউএল ডাম্প করতে চান তবে আপনার মালিকের তথ্য। এসকিউএল ফাইলে সংরক্ষণ করার বিষয়টি এড়িয়ে যাওয়া বিবেচনা করতে হবে।

তুমি ব্যবহার করতে পার pg_dump --no-owner -d <database_name> -t <table_name> > file.sql


1
আপনি যদি প্রত্যেকটি নাম উল্লেখ না করেই সমস্ত টেবিল চান?
শেকাইন

3
শুধু -t বিকল্পটি সরান! pg_dump -d <database_name> > file.sql
শ্রী হর্ষ কাপালা

4
আমি জানি না কেন তবে -d বিকল্পটি psql9.3 এর জন্য বৈধ নয় এবং প্রদত্ত আদেশটি আমার পক্ষে কাজ করে না। কাজ করা হচ্ছে হ'ল পিজি_ডাম্প -উ ইউজারনেম ডিবি_নেম-টেবিল_নাম> ফাইলের নাম
serkan kucukbay

pg_dump -t <table_name> <database_name> > file.sql
শ্রীরাম

@ ব্যবহারকারী 10664542: দয়া করে ম্যানুয়ালটি পড়ুন, বিশেষত এই বিভাগটি: "এই উদ্দেশ্যে" টেবিলে "ভিউ, উপাদানযুক্ত দর্শন, ক্রম এবং বিদেশী টেবিলগুলি অন্তর্ভুক্ত রয়েছে"।
ফ্রাঙ্ক হিকেন্স

42

pg_dump -h লোকালহোস্ট -p 5432 -U পোস্টগ্র্যাস -d mydb -t my_table> ব্যাকআপ.এসকিউএল

আপনি একটি একক টেবিলের ব্যাকআপ নিতে পারেন তবে আমি পুরো ডাটাবেসের ব্যাকআপ নেওয়ার এবং তারপরে আপনার যে কোনও টেবিলটি পুনরুদ্ধার করার পরামর্শ দেব। পুরো ডাটাবেসের ব্যাকআপ রাখা সর্বদা ভাল।

Pg_dump ব্যবহারের 9 টি উপায়


আমি নিশ্চিত নই কেন এই উত্তরটি কেন ভোট দিয়েছে, লোকেরা নিজেরাই জিনিসগুলি পরীক্ষা না করে বা চেষ্টা করেই +1 ক্লিক করে। এই উত্তরের সমস্যাটি এটি সম্পূর্ণরূপে অকেজো করে তোলে, প্রদত্ত সমাধান / কমান্ডগুলি সারণীতে (প্রাথমিক কী) তৈরি ক্রমগুলি রফতানি করে না এবং তাই আমদানি ব্যর্থ হয়। আমি এমন কোনও একক উত্পাদন পিজি ডাটাবেস সম্পর্কে অবগত নই যা সিকোয়েন্স সহ প্রাথমিক কীগুলি ব্যবহার করে না। এটি অর্ধেক উত্তর, প্রশ্নের পুরোপুরি উত্তর দিতে ব্যর্থ এবং একক টেবিল রফতানি / আমদানির জন্য অতিরিক্ত কাজ প্রয়োজন।
ব্যবহারকারী 10664542

উপরে উল্লিখিত হিসাবে, আমার কাছে একটি শক্তিশালী সন্দেহ আছে ব্যবহারকারী 10664542, তার নামের কোনও এসও উত্তর পোস্ট না করে এখানে তার গভীরতার বাইরে। যখন ক্রমটি অতিরিক্ত জটিলতা নিয়ে আসে, পর্যাপ্ত উত্সগুলি একইরকম উত্তরগুলিতে থাকে যে লোকেরা সম্ভবত তাদের কাজ করার পরেও যদি তারা সত্যের পরে ক্রমটি সামঞ্জস্য করতে হয়েছিল। আমার ডাম্পটি পুনরুদ্ধার করতে হলে আমি max(id)আমার টেবিলের একটি থেকে সিকোয়েন্সের শেষ আইডি আপডেট করার উপায়গুলি সন্ধান করব। এটি সেই উত্তরটির জন্য কাজ করেছে এবং আমি আত্মবিশ্বাসী, উত্পন্ন স্কয়ারের দিকে তাকিয়ে, আমি এটি পুনরুদ্ধার করতে পারতাম।
জেএল পেয়ারেট

9

আপনি যদি গ্রাফিক্যাল ইউজার ইন্টারফেসটি পছন্দ করেন তবে আপনি পিজএডমিন তৃতীয় (লিনাক্স / উইন্ডোজ / ওএস এক্স) ব্যবহার করতে পারেন। আপনার পছন্দের টেবিলটিতে কেবল ডান ক্লিক করুন, তারপরে "ব্যাকআপ"। এটি pg_dumpআপনার জন্য একটি আদেশ তৈরি করবে ।

এখানে চিত্র বর্ণনা লিখুন

এখানে চিত্র বর্ণনা লিখুন

এখানে চিত্র বর্ণনা লিখুন


2

ফ্র্যাঙ্ক হেইকেনের উত্তরের সংযোজন হিসাবে আপনি যদি এর INSERTপরিবর্তে বিবৃতি ব্যবহার করতে চান copy from stdinতবে আপনার --insertsপতাকাটি নির্দিষ্ট করা উচিত

pg_dump --host localhost --port 5432 --username postgres --format plain --verbose --file "<abstract_file_path>" --table public.tablename --inserts dbname

লক্ষ্য করুন যে আমি --ignore-versionপতাকাটি রেখে দিয়েছি , কারণ এটি অবনমিত রয়েছে।


আমি নিশ্চিত নই কেন এই উত্তরটি কেন ভোট দিয়েছে, লোকেরা নিজেরাই জিনিসগুলি পরীক্ষা না করে বা চেষ্টা করেই +1 ক্লিক করে। এই উত্তরের সমস্যাটি এটি সম্পূর্ণরূপে অকেজো করে তোলে, প্রদত্ত সমাধান / কমান্ডগুলি সারণীতে (প্রাথমিক কী) তৈরি ক্রমগুলি রফতানি করে না এবং তাই আমদানি ব্যর্থ হয়। আমি এমন কোনও একক উত্পাদন পিজি ডাটাবেস সম্পর্কে অবগত নই যা সিকোয়েন্স সহ প্রাথমিক কীগুলি ব্যবহার করে না। এটি অর্ধেক উত্তর, প্রশ্নের পুরোপুরি উত্তর দিতে ব্যর্থ এবং একক টেবিল রফতানি / আমদানির জন্য অতিরিক্ত কাজ প্রয়োজন।
ব্যবহারকারী 10664542
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.