PostgreSQL ডাটাবেসে এসকিউএল ডাম্প আমদানি করুন


450

আমরা হোস্টগুলি স্যুইচ করছি এবং পুরানোটি আমাদের সাইটের PostgreSQL ডাটাবেসের একটি এসকিউএল ডাম্প সরবরাহ করেছে।

এখন, আমি এটি পরীক্ষা করার জন্য স্থানীয় WAMP সার্ভারে এটি সেট আপ করার চেষ্টা করছি to

একমাত্র সমস্যা হ'ল আমি সেটআপ করা পোস্টগ্রিএসকিউএল 9 এ এই ডাটাবেসটি কীভাবে আমদানি করব তা সম্পর্কে আমার ধারণা নেই।

আমি পিজএডমিন তৃতীয় চেষ্টা করেছিলাম তবে আমি কোনও 'আমদানি' ফাংশন খুঁজে পাচ্ছি না। সুতরাং আমি কেবল এসকিউএল সম্পাদকটি খুললাম এবং সেখানে ডাম্পের বিষয়বস্তুগুলি পেস্ট করেছি এবং এটি সম্পাদন করেছি, এটি টেবিলগুলি তৈরি করে কিন্তু যখন এটিতে ডেটা রাখার চেষ্টা করে তখন এটি আমাকে ত্রুটি দেয়।

ERROR:  syntax error at or near "t"
LINE 474: t 2011-05-24 16:45:01.768633 2011-05-24 16:45:01.768633 view...

The lines:
COPY tb_abilities (active, creation, modtime, id, lang, title, description) FROM stdin;
t   2011-05-24 16:45:01.768633  2011-05-24 16:45:01.768633  view    nl ...  

আমি কমান্ড প্রম্পট দিয়ে এটি করার চেষ্টা করেছি কিন্তু আমার যে কমান্ডটি প্রয়োজন তা সন্ধান করতে পারি না।

যদি আমি করি

psql mydatabase < C:/database/db-backup.sql;

আমি ত্রুটি পেয়েছি

ERROR:  syntax error at or near "psql"
LINE 1: psql mydatabase < C:/database/db-backu...
        ^

ডাটাবেস আমদানির সেরা উপায় কী?


আমি তোমার প্রথম এক একটি অনুরূপ ত্রুটি ছিল: ERROR: syntax error at or near "t"। দেখা গেল যে আমি কেবল একটি আংশিক স্কিমা আমদানি করেছি এবং এভাবে CREATE TABLEস্ক্রিপ্টের আগে একটি বিবৃতি ব্যর্থ হয়েছিল। এটি খুঁজে পেতে আমদানির সম্পূর্ণ আউটপুটটি দেখুন।
owensmartin

উত্তর:


730
psql databasename < data_base_dump

আপনি যে আদেশটি সন্ধান করছেন এটি।

সাবধান: databasenameআমদানির আগে অবশ্যই তৈরি করা উচিত। কটাক্ষপাত আছে পোস্টগ্রি ডক্স অধ্যায় 23. ব্যাকআপ এবং পুনরুদ্ধার করুন


1
আমি চেষ্টা করেছি যে পিএসএইচএল মাইডাটাবেস <সি: \ ডাটাবেস \ ডিবি-ব্যাকআপ.এসকিউএল তবে আমি ত্রুটিটি পেয়েছি অবৈধ কমান্ড \ ডাটাবেস। আমি এর আশেপাশে "" চেষ্টা করেছিলাম।
dazz

23
@ ড্যাজ আপনার এই কমান্ডটি পোস্ট ক্রেস প্রম্পট থেকে নয়, আপনার কমান্ড প্রম্পট (শুরু -> চালান -> সেমিডি) থেকে করতে হবে।
জ্যাকব

2
যদি আমি এটি সেন্টিমিডি থেকে চালনা করি তবে আমি 'দ্য' <অপারেটরটি ভবিষ্যতের ব্যবহারের জন্য সংরক্ষিত। '
dazz

3
@ ড্যাজ: আপনিও -fসুইচ (বা --file) ব্যবহার করতে পারেন
গ্রজেগোর্জ এস্পেটকোভস্কি

47
পিএসকিএল - ব্যবহারকারীর নাম = পোস্টগ্রিজ ডাটাবেস <ডাটা_বেস_ডাম্প.এসকিএল
ম্যাক্সেন্স

355

আপনি যে আদেশটি সন্ধান করছেন তা এখানে।

psql -h hostname -d databasename -U username -f file.sql

29
ভাল, তবে আরও ভাল ফাইল-এ আউটপুট লগ করতে "-L logfile.log" পরম যুক্ত করতে পারেন।
zerologiko

2
এটি পেয়েছে "ইনপুটটি পোস্টগ্রিসএসকিউএল কাস্টম-ফর্ম্যাট ডাম্প this
ওয়াজদান আলী

3
আপনি এটিও করতে পারেন:pg_restore -h hostname -d dbname -U username filename.sql
ফ্যাবিও আরাজিও

114

আমি বিশ্বাস করি যে আপনি পিএসকিএল চালাতে চান:

\i C:/database/db-backup.sql

এটি ব্যবহার করতে হয়েছিল কারণ ইম্যাকস-এর এহেল ইনপুট পুনঃনির্দেশকে সমর্থন করে না। ধন্যবাদ।
ডুমা

3
প্রথমে ডাটাবেসে change সি <ড্যাটাবেস_নাম>
হংকং

53

এটি আমার পক্ষে কাজ করেছে:

sudo -u postgres psql db_name < 'file_path'

49

আমি নিশ্চিত নই যে এটি ওপি-র পরিস্থিতির জন্য কাজ করে কিনা তবে আমি দেখতে পেলাম যে ইন্টারেক্টিভ কনসোলে নিম্নলিখিত কমান্ডটি চালানো আমার পক্ষে সবচেয়ে নমনীয় সমাধান ছিল:

\i 'path/to/file.sql'

কেবলমাত্র নিশ্চিত হয়ে নিন যে আপনি ইতিমধ্যে সঠিক ডাটাবেসের সাথে সংযুক্ত রয়েছেন। এই কমান্ডটি নির্দিষ্ট ফাইলে সমস্ত এসকিউএল কমান্ড কার্যকর করে।


1
এই সমাধানটি আমার পক্ষে কাজ করেছে যখন সবচেয়ে বেশি ভোট দেওয়া সমাধান "স্টিডিন একটি টিটি নয়" ত্রুটি পেয়েছিল।
김민준

ঠিক আমি যা খুঁজছিলাম - psqlকমান্ড লাইনের ভিতরে থেকে স্ক্রিপ্টটি কার্যকর করার একটি উপায় । ধন্যবাদ!
ভ্যাটসুগ

এইটির জন্য আপনাকে কেবল ধন্যবাদ জানাতে চেয়েছিলাম। সঠিক উত্তরের অন্তর্ভুক্ত করা উচিত।
পিকেহান্টার

এটি সঠিক, উইন্ডোগুলির পথে ব্যাক-স্ল্যাশ ব্যবহার করবেন না!
এরডিং এআই

উইন্ডোজের জন্যও আপনার ডাবল-ফরোয়ার্ড স্ল্যাশ দরকার
CMAS

44

কমান্ড লাইনে, খুব ভাল কাজ করে, সমস্ত আর্গুমেন্ট প্রয়োজন, -ডাব্লু পাসওয়ার্ডের জন্য

psql -h localhost -U user -W -d database_name -f path/to/file.sql

22

কেবল মজাদার জন্য, যদি আপনার ডাম্প সংকুচিত হয় তবে আপনি এর মতো কিছু করতে পারেন

gunzip -c filename.gz | psql dbname

জ্যাকব যেমন উল্লেখ করেছেন, পোস্টগ্র্যাস এসকিউএল ডক্সগুলি এগুলি বেশ ভালভাবে বর্ণনা করে।


7

আমি ব্যবহার করি:

cat /home/path/to/dump/file | psql -h localhost -U <user_name> -d <db_name>

আশা করি এটি কারও সাহায্য করবে।


4

আপনি এটি pgadmin3 এ করতে পারেন। আপনার ডাম্পের মধ্যে থাকা স্কিমা (গুলি) ফেলে দিন। তারপরে ডাটাবেসে ডান ক্লিক করুন এবং পুনরুদ্ধার নির্বাচন করুন। তারপরে আপনি ডাম্প ফাইলের জন্য ব্রাউজ করতে পারেন।


2
কিন্তু 'পুনরুদ্ধার' বোতামটি .sql ফাইল নির্বাচন করার পরেও ক্লিক-সক্ষম হয় না। এই সফ্টওয়্যারটি অন্য কিছু ধরণের ফাইল চায় বলে মনে হচ্ছে - * ব্যাকআপ ফর্ম্যাট সহ একটি। সেই আমদানি বাক্সে 'সহায়তা' ক্লিক করা মানে পিজি_রেস্টোরকে বোঝায় - "... প্লে_ডাম্প দ্বারা তৈরি একটি সংরক্ষণাগার থেকে পোস্টগ্রিএসকিউএল ডাটাবেস পুনরুদ্ধার করার জন্য একটি ইউটিলিটি নন-প্লেইন-পাঠ্য বিন্যাসের মধ্যে।" ওপিকে যে স্কোর ফাইলটি নির্দেশ করে তা হ'ল একটি সরল-পাঠ্য বিন্যাস।
জোসেফকে


3

আপনি যে ডাটাবেসটি আমদানি করতে চান তা তৈরি হয়েছে তা নিশ্চিত করুন, তারপরে আপনি ডাম্পটি আমদানি করতে পারবেন

sudo -u postgres -i psql testdatabase < db-structure.sql

আপনি যদি পুরো ডাটাবেসটি ওভাররাইট করতে চান তবে প্রথমে ডাটাবেসটি ফেলে দিন

# be sure you drop the right database !!!
#sudo -u postgres -i psql -c "drop database testdatabase;"

এবং তারপরে এটি পুনরায় তৈরি করুন

sudo -u postgres -i psql -c "create database testdatabase;"

2

আমার পোস্টগ্রিজ ব্যাকআপ পুনরুদ্ধার করার জন্য আমি বিভিন্ন ধরণের সমাধানের চেষ্টা করেছি। আমি ম্যাকওএস-এ সমস্যা অস্বীকারের অনুমতিতে দৌড়েছি, কোনও সমাধান কাজ করছে বলে মনে হচ্ছে না।

আমি কীভাবে এটি কাজ করেছিলাম তা এখানে:

পোস্টগ্রিস প্যাগাদমিন 4 নিয়ে আসে। আপনি যদি ম্যাকোস ব্যবহার করেন তবে আপনি CMD+ টিপুন SPACEএবং pgadmin4এটিকে চালাতে টাইপ করতে পারেন। এটি ক্রোমে একটি ব্রাউজার ট্যাব খুলবে।

আপনি যদি কাজ করার জন্য pgadmin4 পেতে ত্রুটির killall pgAdmin4মধ্যে পড়ে থাকেন তবে আপনার টার্মিনালটিতে চেষ্টা করুন, তারপরে আবার চেষ্টা করুন।


Pgadmin4 + ব্যাকআপ / পুনরুদ্ধার করার পদক্ষেপ

1. ব্যাকআপ তৈরি করুন

ডাটাবেস -> "ব্যাকআপ" রাইট ক্লিক করে এটি করুন

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

২. ফাইলটির একটি নাম দিন।

লাইক test12345। ব্যাকআপ ক্লিক করুন। এটি একটি বাইনারি ফাইল ডাম্প তৈরি করে, এটি কোনও .sqlফর্ম্যাটে নয়

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

৩. এটি কোথায় ডাউনলোড হয়েছে দেখুন

আপনার পর্দার নীচে ডানদিকে একটি পপআপ থাকা উচিত। আপনার ব্যাকআপ কোথায় ডাউনলোড হয়েছে তা দেখতে "আরও বিশদ" পৃষ্ঠাতে ক্লিক করুন

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

৪. ডাউনলোড করা ফাইলের অবস্থান সন্ধান করুন

এই ক্ষেত্রে, এটি /users/vincenttang

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

৫. পেগডমিন থেকে ব্যাকআপ পুনরুদ্ধার করুন

ধরুন আপনি 1 থেকে 4 টি পদক্ষেপটি সঠিকভাবে করেছেন, আপনার কাছে পুনরুদ্ধার করা বাইনারি ফাইল থাকবে। এমন এক সময় আসতে পারে যে আপনার সহকর্মী তাদের স্থানীয় মেশিনে আপনার পুনরুদ্ধার ফাইলটি ব্যবহার করতে চায়। বলেছে ব্যক্তি প্যাগাডমিনে গিয়ে পুনরুদ্ধার করুন

ডাটাবেসটিতে ডান ক্লিক করে এটি করুন -> "পুনরুদ্ধার করুন"

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

6. ফাইল অনুসন্ধানকারী নির্বাচন করুন

ম্যানুয়ালি ফাইলের অবস্থানটি নির্বাচন করার বিষয়টি নিশ্চিত করুন, প্যাগডমিনে আপলোডার ক্ষেত্রগুলিতে কোনও ফাইল টেনে টেনে আনবেন না। কারণ আপনি ত্রুটির অনুমতিতে চলে যাবেন। পরিবর্তে, সবেমাত্র তৈরি করা ফাইলটি সন্ধান করুন:

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

Said. বলা ফাইলটি সন্ধান করুন

আপনাকে নীচের অংশে ফিল্টারটি "সমস্ত ফাইল" এ পরিবর্তন করতে হতে পারে। এরপরে ফাইলটি সন্ধান করুন step ধাপ থেকে Now এখন নিশ্চিত করতে নীচের দিকে "নির্বাচন করুন" বোতামটি চাপুন

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

8. ফাইল পুনরুদ্ধার

আপনি নির্বাচিত ফাইলের অবস্থান সহ এই পৃষ্ঠাটি আবার দেখতে পাবেন। এগিয়ে যান এবং এটি পুনরুদ্ধার

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

9. সাফল্য

সব কিছু ঠিক থাকলে নীচের ডানদিকে একটি সফল পুনরুদ্ধার দেখানো একটি সূচক পপআপ করা উচিত। প্রতিটি টেবিলে ডেটা যথাযথভাবে পুনরুদ্ধার করা হয়েছে কিনা তা দেখতে আপনি আপনার টেবিলগুলিতে নেভিগেট করতে পারেন।

১০. এটি সফল না হলে:

পদক্ষেপ 9 ব্যর্থ হওয়া উচিত, আপনার ডাটাবেসে আপনার পুরানো পাবলিক স্কিমা মুছতে চেষ্টা করুন। "ক্যোয়ারী সরঞ্জাম" এ যান

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

এই কোড ব্লক কার্যকর করুন:

DROP SCHEMA public CASCADE; CREATE SCHEMA public;

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

এখন 5 থেকে 9 ধাপে আবার চেষ্টা করুন, এটি কার্যকর হওয়া উচিত

সারসংক্ষেপ

পোস্টগ্র্রেসে আমার ব্যাকআপটি পুনঃস্থাপন / পুনরুদ্ধার করতে হয়েছিল, যখন আমার ত্রুটির অনুমতি সংক্রান্ত সমস্যা ছিল এবং সুপারভাইজার হিসাবে লগ ইন করতে পারি নি। অথবা chmodফোল্ডারগুলির ব্যবহার করে পড়ার / লেখার জন্য শংসাপত্রগুলি সেট করুন । এই কর্মপ্রবাহটি প্যাগডমিন থেকে "কাস্টম" এর বাইনারি ফাইল ডাম্প ডিফল্টের জন্য কাজ করে। আমি ধরে নিয়েছি .sqlএকইভাবে, তবে আমি এখনও এটি পরীক্ষা করে দেখিনি

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