मैं mysqldump से डंप फ़ाइल को कैसे पुनर्स्थापित करूं?


542

मुझे एक MySQL डेटाबेस फ़ाइल दी गई थी जिसे मुझे अपने विंडोज सर्वर 2008 मशीन पर डेटाबेस के रूप में पुनर्स्थापित करने की आवश्यकता है।

मैंने MySQL व्यवस्थापक का उपयोग करने की कोशिश की, लेकिन मुझे निम्नलिखित त्रुटि मिली:

चयनित फ़ाइल mysqldump द्वारा जनरेट की गई थी और इस एप्लिकेशन द्वारा पुनर्स्थापित नहीं की जा सकती।

मुझे यह काम कैसे करना है?

जवाबों:


586

इसे चलाना जितना आसान होना चाहिए:

mysql -u <user> -p < db_backup.dump

यदि डंप एक एकल डेटाबेस का है, तो आपको फ़ाइल के शीर्ष पर एक पंक्ति जोड़नी होगी:

USE <database-name-here>;

यदि यह कई डेटाबेस का डंप था, तो उपयोग विवरण पहले से ही हैं।

इन आदेशों को चलाने के लिए, एक कमांड प्रॉम्प्ट (विंडोज में) खोलें और cdनिर्देशिका में जहां mysql.exeनिष्पादन योग्य है (आपको इसके लिए थोड़ा चारों ओर देखना पड़ सकता है, यह इस बात पर निर्भर करेगा कि आपने mysql, यानी स्टैंडअलोन या इसके भाग के रूप में कैसे स्थापित किया है) WAMP जैसे पैकेज)। एक बार जब आप उस निर्देशिका में आ जाते हैं, तो आपको केवल कमांड टाइप करने में सक्षम होना चाहिए क्योंकि मेरे पास यह ऊपर है।


1
क्या मैं "MySQL कमांड लाइन क्लाइंट" का उपयोग करता हूं? मैंने पहले कभी MySQL का उपयोग नहीं किया है।
ज़ैक पीटरसन

1
पाठ संपादक में डंप फ़ाइल को खोलें, इसे चुनना काफी आसान है, अगर कोई "उपयोग कर रहे हैं" कथन हैं, तो इसके कई डेटाबेस, यदि कोई नहीं हैं, तो आपको इससे पहले शीर्ष पर एक जोड़ना होगा। उस आदेश को चलाएं।
जस्टिन बेनेट

6
निश्चित रूप से डेटाबेस है कि आप "का उपयोग कर" बयान में पहले मौजूद होगा।
जस्टिन बेनेट

112
देखें वोग्स का जवाब वाक्यविन्यास को फ़ाइल की शुरुआत में mysql -u<user> -p mydatabasename < db_backup.dump एक USEबयान की आवश्यकता नहीं है
तोस्कान

1
"पाठ संपादक में डंप फ़ाइल खोलें" सुझाव अजीब लगता है। यह छोटे डेटाबेस या एडिटपैड की तरह एक बफर टेक्स्ट एडिटर के साथ काम कर सकता है, लेकिन बाकी सब के साथ यह घुट जाएगा। यह अच्छा होगा यदि आपको यह कदम नहीं उठाना पड़ा।
मकाटो

718

यदि आप जिस डेटाबेस को पुनर्स्थापित करना चाहते हैं, वह पहले से मौजूद नहीं है, तो आपको इसे पहले बनाने की आवश्यकता है।

कमांड-लाइन पर, यदि आप उसी निर्देशिका में हैं जिसमें डंप की गई फ़ाइल है, तो इन कमांड का उपयोग करें (उचित प्रतिस्थापन के साथ):

C:\> mysql -u root -p

mysql> create database mydb;
mysql> use mydb;
mysql> source db_backup.dump;

52
मैं व्यक्तिगत रूप से इस पद्धति को पसंद करता हूं। यह डंप की प्रगति को दिखाता है और यह भी बताता है कि विभिन्न एसक्यूएल को कितना समय लग रहा है।
टफपल

11
@Phrogz वास्तव में आप mysql -u root -psecret बिना स्पेस का उपयोग किए कमांड लाइन पर पासवर्ड की आपूर्ति कर सकते हैं , लेकिन इसका नुकसान यह है कि आपका पासवर्ड प्रक्रिया सूचियों और लॉग फ़ाइलों में क्लीयरटेक्स में दिखाई देता है। यह बेहतर है, जैसा कि आप सुझाव देते हैं, खाली का उपयोग करें -pऔर इसे प्रॉम्प्ट में टाइप करें।
जो होलोवे

इस पद्धति से सत्र-आधारित चरों (उदाहरण के लिए FOREIGN_KEY_CHECKS) को डंप फ़ाइल को संपादित किए बिना सेट करने की अनुमति है
क्रिस कूपर

यह सब अच्छी तरह से और महान है जब हाथ से इस तरह का काम कर रहा है, लेकिन एक बाश स्क्रिप्ट से काम नहीं करता है।
chacham15

1
एक दोष: यह gzipped डंप लोड नहीं कर सकता (जैसे के साथ उत्पन्न mysqldump db | gzip -9 > dumpfile.sql.gz)
Marinos

246

आपको बस इसे चलाने की आवश्यकता है:

mysql -p -u[user] [database] < db_backup.dump

यदि डंप में कई डेटाबेस होते हैं, तो आपको डेटाबेस का नाम छोड़ देना चाहिए:

mysql -p -u[user] < db_backup.dump

इन आदेशों को चलाने के लिए, एक कमांड प्रॉम्प्ट (विंडोज में) खोलें और cdनिर्देशिका में जहां mysql.exeनिष्पादन योग्य है (आपको इसके लिए थोड़ा चारों ओर देखना पड़ सकता है, यह इस बात पर निर्भर करेगा कि आपने mysql, यानी स्टैंडअलोन या इसके भाग के रूप में कैसे स्थापित किया है) WAMP जैसे पैकेज)। एक बार जब आप उस निर्देशिका में होते हैं, तो आपको केवल कमांड टाइप करने में सक्षम होना चाहिए।



33

जब हम एक डंप फ़ाइल बनाते हैं mysqldump, तो इसमें क्या होता है, डेटाबसे सामग्री को फिर से बनाने के लिए एक बड़ी एसक्यूएल स्क्रिप्ट है। इसलिए हम MySQL के कमांड-लाइन क्लाइंट का उपयोग करके इसे पुनर्स्थापित करते हैं:

mysql -uroot -p 

( rootMySQL के लिए हमारा व्यवस्थापक उपयोगकर्ता नाम कहां है), और एक बार डेटाबेस से जुड़ा होने के बाद हमें डेटाबेस बनाने के लिए कमांड की जरूरत होती है और इसमें फाइल को पढ़ा जाता है:

create database new_db;
use new_db;
\. dumpfile.sql

डंप फ़ाइल बनाते समय कौन से विकल्प का उपयोग किया गया था, इसके अनुसार विवरण अलग-अलग होंगे।


19

DB में प्रवेश करने के लिए कमांड चलाएँ

 # mysql -u root -p 

उपयोगकर्ता के लिए पासवर्ड दर्ज करें फिर एक नया DB बनाएँ

mysql> create database MynewDB;
mysql> exit

और बाहर निकलें। इस आदेश को मानें

# mysql -u root -p  MynewDB < MynewDB.sql

फिर db में टाइप करें और टाइप करें

mysql> show databases;
mysql> use MynewDB;
mysql> show tables;
mysql> exit

यह बात ........ आपके डंप को एक DB से दूसरे DB में बहाल किया जाएगा

या फिर डंप रिस्टोर का एक वैकल्पिक तरीका है

# mysql -u root -p 

फिर db में टाइप करें और टाइप करें

mysql> create database MynewDB;
mysql> show databases;
mysql> use MynewDB;
mysql> source MynewDB.sql;
mysql> show tables;
mysql> exit

14

इन चरणों का पालन करने के लिए मुझे यह मिला ...

  1. MySQL एडमिनिस्ट्रेटर खोलें और सर्वर से कनेक्ट करें

  2. बाईं ओर "कैटलॉग" चुनें

  3. निचले-बाएँ बॉक्स में राइट क्लिक करें और "नई योजना बनाएँ" चुनें

    MySQL प्रशासक http://img204.imageshack.us/img204/7528/adminsx9.th.gif विस्तार छवि

  4. नए स्कीमा का नाम (उदाहरण: "dbn")

    MySQL नई स्कीमा http://img262.imageshack.us/img262/4374/newwa4.th.gif विस्तार छवि

  5. ओपन विंडोज कमांड प्रॉम्प्ट (cmd)

    Windows कमांड प्रॉम्प्ट http://img206.imageshack.us/img206/941/startef7.th.gif विस्तार छवि

  6. निर्देशिका को MySQL स्थापना फ़ोल्डर में बदलें

  7. निष्पादित आदेश:

    mysql -u root -p dbn < C:\dbn_20080912.dump

    ... जहां "रूट" उपयोगकर्ता का नाम है, "dbn" डेटाबेस का नाम है, और "C: \ dbn_20080912.dump" mysqldump .dump फ़ाइल का पथ / फ़ाइल नाम है।

    MySQL डंप रीस्टोर कमांड लाइन http://img388.imageshack.us/img388/2489/cmdjx0.th.gif विस्तार छवि

  8. का आनंद लें!


12

SQLL / डंप फ़ाइलों को आयात करने के लिए आप SQLyog 'Execute SQL स्क्रिप्ट' उपकरण आज़मा सकते हैं ।

यहाँ छवि विवरण दर्ज करें


11

यदि आप डंप की प्रगति देखना चाहते हैं तो यह कोशिश करें:

pv -i 1 -p -t -e /path/to/sql/dump | mysql -u USERNAME -p DATABASE_NAME

आप निश्चित रूप से स्थापित 'pv' की आवश्यकता होगी। यह कमांड केवल * निक्स पर काम करता है।


10

पिछले उत्तर के विशिष्ट उदाहरण के रूप में:

मुझे एक बैकअप को पुनर्स्थापित करने की आवश्यकता थी ताकि मैं इसे SQL सर्वर में आयात / माइग्रेट कर सकूं। मैंने केवल MySql स्थापित किया था, लेकिन इसे एक सेवा के रूप में पंजीकृत नहीं किया या इसे अपने पथ में नहीं जोड़ा क्योंकि मुझे इसे चालू रखने की आवश्यकता नहीं है।

मैंने अपनी डंप फ़ाइल को C: \ code \ dip.sql में डालने के लिए विंडोज़ एक्सप्लोरर का उपयोग किया। फिर स्टार्ट मेनू आइटम से MySql खोला। DB बनाया, फिर स्रोत कमांड को पूर्ण पथ के साथ चलाया जैसे:

mysql> create database temp
mysql> use temp
mysql> source c:\code\dump.sql

9

विंडोज पर w / mysql 5.5 को पुनर्स्थापित करने के लिए लिनक्स पर बनाई गई 200 एमबी डंप फ़ाइल का उपयोग करना, मुझे इसके साथ अधिक सफलता मिली

source file.sql

के साथ की तुलना में mysql प्रॉम्प्ट से दृष्टिकोण

mysql  < file.sql

कमांड लाइन पर दृष्टिकोण, जिसके कारण कुछ त्रुटि 2006 "सर्वर दूर चला गया है" (विंडोज़ पर)

अजीब तरह से, (mysql) इंस्टॉल के दौरान बनाई गई सेवा एक my.ini फ़ाइल को संदर्भित करती है जो मौजूद नहीं थी। मैंने my.ini के लिए "बड़े" उदाहरण फ़ाइल की प्रतिलिपि बनाई, जिसे मैंने पहले ही संशोधित वृद्धि के साथ संशोधित किया था।

मेरे मान हैं

[mysqld]
max_allowed_packet = 64M
interactive_timeout = 250
wait_timeout = 250

9
./mysql -u <username> -p <password> -h <host-name like localhost> <database-name> < db_dump-file

यह अन्य उत्तरों के एक जोड़े के समान है, और यह एक आठ साल पुराना सवाल है।
miken32

2
यद्यपि चयनित उत्तर बहुत अच्छा है, यह उत्तर वास्तव में मेरे लिए अधिक उपयोगी था। मेरी डेटाबेस फ़ाइल बड़ी थी, और नोटपैड ++ में इसे खोलना एक बुरा सपना था, यह सिर्फ आकार को संभाल नहीं सका और मुझे एसक्यूएल फ़ाइल के शीर्ष पर डेटाबेस का नाम जोड़ने की अनुमति नहीं देगा। जिस स्थिति में कमांड लाइन से db नाम निर्दिष्ट करने में सक्षम किया जा रहा है वह वास्तव में अधिक सहायक है।
नजीब

mysqlआदेश विकल्प और उनके तर्कों के बीच रिक्त स्थान को स्वीकार नहीं करता। इसके -u<username>बजाय होना चाहिए , और पासवर्ड कमांड लाइन पर बिल्कुल भी प्रदान नहीं किया जाना चाहिए।
रोलैंड इलिग

4

यदि बैकअप / डंप वहां से नहीं बनाया गया था, तो आप MySQL एडमिन में रिस्टोर मेन्यू का उपयोग नहीं कर सकते। यह हालांकि एक शॉट के लायक है। यदि आप इसके लिए चेकबॉक्स के साथ "त्रुटियों को अनदेखा करना" चुनते हैं, तो यह कहेगा कि यह सफलतापूर्वक पूरा हो गया है, हालांकि यह स्पष्ट रूप से आयातित पंक्तियों के केवल एक अंश के साथ बाहर निकलता है ... यह एक डंप के साथ है, आप मन।


2

जनरेट SQL को पुनर्स्थापित करने के लिए वन-लाइनर कमांड mysqldump

mysql -u <username> -p<password> -e "source <path to sql file>;"

1
जैसेmysql -u root -p12345678 -e "source /tmp/backup.sql;"
जोसेफ हर्ष

पासवर्ड का उपयोग इस तरह से न करें, केवल -p और कमांड लाइन आपके द्वारा प्रेस करने के बाद एक सुरक्षित पासवर्ड अनुरोध का संकेत देगा।
user2473015

जब आप इंटरेक्टिव प्रॉम्प्ट बर्दाश्त कर सकते हैं, तो आप सही हैं। जब आप (उदाहरण नहीं लिखी गई स्क्रिप्ट) कर सकते हैं, तो आप शायद इसे इनलाइन का उपयोग करेंगे
जोसेफ हर्ष

1

आप MySQL एडमिनिस्ट्रेटर में रिस्टोर मेन्यू का भी उपयोग कर सकते हैं। आपको बस बैक-अप फ़ाइल खोलनी होगी, और फिर रिस्टोर बटन पर क्लिक करना होगा।


0

MySQLWorkbench के साथ MySQL डेटाबेस को कैसे पुनर्स्थापित करें

आप ड्रॉप को चला सकते हैं और क्वेरी टैब में कमांड बना सकते हैं।

स्कीमा छोड़ें अगर यह वर्तमान में मौजूद है

DROP DATABASE `your_db_name`;

एक नई स्कीमा बनाएँ

CREATE SCHEMA `your_db_name`;

अपनी डंप फ़ाइल खोलें

MySQLWorkbench खुली sql फ़ाइल

  1. नए क्वेरी टैब में SQL स्क्रिप्ट खोलें पर क्लिक करें आइकन और अपनी db डंप फ़ाइल चुनें।
  2. फिर SQL स्क्रिप्ट चलाएँ ...
  3. यह तब आपको SQL डंप स्क्रिप्ट की पहली पंक्तियों का पूर्वावलोकन करने देगा।
  4. फिर आप डिफ़ॉल्ट स्कीमा नाम चुनेंगे
  5. अगला डिफॉल्ट कैरेक्टर सेट चुनें utf8 सामान्य रूप से एक सुरक्षित शर्त है, लेकिन आप इसे पसंद के लिए पूर्वावलोकन लाइनों को देखने से इसे समझने में सक्षम हो सकते हैं कैरेक्टर_सेट
  6. क्लिक करें रन पर
  7. बड़े DB के स्क्रिप्ट के लिए धैर्य रखें और अपने ड्राइव स्पेस को पिघलाते हुए देखें! 🎉

0

मान लें कि आपके पास पहले से ही रिक्त डेटाबेस है, तो आप इस तरह से कमांड लाइन से एक डेटाबेस को भी पुनर्स्थापित कर सकते हैं:

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