कमांड प्रॉम्प्ट का उपयोग करके mysql डेटाबेस कैसे निर्यात करें?


342

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

मैं WAMP का उपयोग कर रहा हूं।


6
करने योग्य? क्या आप विंडोज 98 का ​​उपयोग कर रहे हैं? या आप कमांड प्रॉम्प्ट का मतलब है?
जिल

Wamp का उपयोग करते हुए, आपके पास निर्यात विकल्प के साथ phpmyadmin भी होना चाहिए
लार्स सी। मैग्यूसन

जवाबों:


536

पहले जांच लें कि आपकी कमांड लाइन mysql कमांड को पहचानती है या नहीं। यदि कमांड और टाइप न करें:

set path=c:\wamp\bin\mysql\mysql5.1.36\bin

फिर अपने डेटाबेस को निर्यात करने के लिए इस कमांड का उपयोग करें:

mysqldump -u YourUser -p YourDatabaseName > wantedsqlfile.sql

फिर आपको डेटाबेस पासवर्ड के लिए संकेत दिया जाएगा ।

इस कमांड को निष्पादित करने के दौरान, आप वर्तमान में जिस पथ पर हैं, डेटाबेस निर्यात करता है

नोट: यहाँ आयात और निर्यात दोनों के बारे में कुछ विस्तृत निर्देश दिए गए हैं


7
यह त्रुटि देता है "mysqldump: Got error: 1049: अज्ञात डेटाबेस 'thepassword' जब डेटाबेस का चयन करता है", लेकिन काम करता है जब मैं "-p userpassword" हटाता हूं
Ateş Danış

11
@ AteşDanış -pऔर के बीच कोई स्थान नहीं है thepassword
चार्ल्स वुड

44
आपको बस उपयोग करना चाहिए -pऔर फिर पासवर्ड के लिए संकेत दिया जाएगा। इस तरह आप अपने पासवर्ड को सेव करने से बचते हैं जैसे कि.bash_history
nuala

7
मेरे लिए, यह कमांड काम करती है: mysqldump -u YourUser -p YourDatabaseName> वांटसकफाइल। Sql (कमांड टाइप करें, एंटर दबायें और फिर पासवर्ड डाला जाएगा)।
shasi kant

3
कमांड लाइन पर एक पासवर्ड निर्दिष्ट करना असुरक्षित माना जाना चाहिए।
wappy

112

बस निम्नलिखित कमांड का उपयोग करें,

निर्यात के लिए:

mysqldump -u [user] -p [db_name] | gzip > [filename_to_compress.sql.gz] 

आयात के लिए:

gunzip < [compressed_filename.sql.gz]  | mysql -u [user] -p[password] [databasename] 

नोट: कीवर्ड '-p' और आपके पासवर्ड के बीच कोई स्थान नहीं है।


1
मुझे लगता है कि आप इस तथ्य को याद करते हैं कि वह WAMP - Windows ... का उपयोग कर रहा है ... gunzip / gzip विंडोज के साथ बंडल नहीं है। यह संभव हो सकता है कि कुछ सामान स्थापित करने के बाद आपकी कमांड को चलाया जाए, लेकिन मुझे लगता है कि आपने उस तथ्य को याद किया है।
रॉल्फ

2
निर्दिष्ट gzip -9करने से परिणामी फ़ाइल थोड़ी छोटी हो जाती है, क्योंकि अधिकतम संपीड़न का उपयोग किया जाता है।
एंटोन

39

सबसे पहले कमांड कमांड खोलें फिर cmd में बिन निर्देशिका खोलें (मुझे आशा है कि आप cmd कमांड्स से अवगत हैं ) WAMP प्रोग्राम फाइल्स में अपने MySql फोल्डर की बिन निर्देशिका पर जाएं ।

चलाने के आदेश

mysqldump -u db_username -p database_name > path_where_to_save_sql_file

प्रेस एन्टर सिस्टम विशेष डेटाबेस का निर्यात करेगा और दिए गए स्थान पर sql फ़ाइल बनाएगा।

मुझे आशा है कि आपको यह मिल गया है :) यदि आपके कोई प्रश्न हैं तो कृपया मुझे बताएं।


मेरे दोस्त मैंने प्रक्रिया को थोड़ा समझाने की कोशिश की है। बल्कि फिर सीधे आदेश दे रहा है
मितेश वघेला

38

वैसे आप नीचे कमांड का उपयोग कर सकते हैं,

mysqldump --databases --user=root --password your_db_name > export_into_db.sql

और जनरेट की गई फ़ाइल उसी डायरेक्टरी में उपलब्ध होगी जहाँ आपने यह कमांड चलाया था।

आप इसके लिए आधिकारिक संदर्भ पर अधिक जानकारी प्राप्त कर सकते हैं mysqldump: आयात निर्यात MySQL DB

नोट : पिछले एक --databasesके --databaseबाद से उपयोग के बजाय और अधिक समर्थित नहीं है।

का आनंद लें :)


4
उन लोगों के लिए, जिन्हें "LOCK TABLES का उपयोग करते समय प्रवेश निषेध" जैसी कोई त्रुटि मिलती है, आपको कमांड में "--single-transaction" पैरामीटर जोड़ना चाहिए।
स्काइपेक्स

मुझे एक त्रुटि मिली, mysqldump: [ERROR] unknown option '--database'लेकिन बुद्धि के बहिष्कार --databaseने काम कर दिया है।
हज्जाद

@Skyrpex धन्यवाद, वह समाधान था जिसकी मुझे तलाश थी।
मार्टिअन

22

इस रास्ते पर कमांड प्रॉम्प्ट पर जाएं,

C:\Program Files (x86)\MySQL\MySQL Server 5.0\bin>

फिर अपने डेटाबेस को निर्यात करने के लिए यह कमांड दें ( कोई स्पेस नहीं -p )

mysqldump -u[username] -p[userpassword] yourdatabase > [filepath]wantedsqlfile.sql


21

के साथ अपने mysql उदाहरण का पता लगाएँ:

which mysql

यदि यह सही है तो निम्नलिखित के साथ निर्यात करें (अन्यथा बिन में अपने नम फ़ोल्डर में mysql उदाहरण पर जाएं):

mysqldump -u [username] -p [password] [dbname] > filename.sql

और यदि आप इसे सममित रूप से ज़िप करना चाहते हैं:

mysqldump -u [username] -p [password] [db] | gzip > filename.sql.gz

आप इस फ़ाइल को सर्वर के बीच ले जा सकते हैं:

scp user@xxx.xxx.xxx.xxx:/path_to_your_dump/filename.sql.gz your_detination_path/

(जहां xxx.xxx.xxx.xxx सर्वर आईपी एड्रेस है)

और फिर इसके साथ आयात करें:

gunzip filename.sql.gz | mysql -u [user] -p [password] [database]

4
फिर, डब्ल्यू एएमपी => विंडोज। जो कि एक Linux कमांड है। गनज़िप / गज़िप विंडोज के साथ बंडल नहीं है - और उपलब्ध नहीं हो सकता है। scp ... आपको बात मिल जाएगी।
रॉल्फ

Opentuned का जवाब बहुत अच्छा है । एक छोटी सी बात वास्तविक passwordको कमांड लाइन से हटा रही है : mysqldump -u [username] -p [dbname]> filename.sql यह पासवर्ड के लिए आपका इतिहास खोजने वाले लोगों को रोकता है।
विंसेंट

1
@Oununed, लिनक्स बुत के साथ क्या है?
पचेरियर

for -p [pasword] पास होना चाहिए जैसे: mysqldump -u tutorials -p'mypassword' -h 127.0.0.1 database_name > file_backup_database_name_.sql चेतावनी: कमांड लाइन इंटरफेस पर पासवर्ड का उपयोग करना असुरक्षित हो सकता है।
मारवान सलीम

19

PROCEDUREs, FUNCTIONs और TRIGGERs को भी निर्यात करने के लिए, --routinesपैरामीटर जोड़ें :

mysqldump -u YourUser -p YourDatabaseName --routines > wantedsqlfile.sql


स्विच --routinesसे फर्क पड़ता है :) किसी भी संकेत को केवल प्रोसीड्योर, फक्शन और ट्राइगर को कैसे निर्यात किया जाए? उन लोगों के लिए जो स्विच के बारे में भूल गए हैं और "शुद्ध" डीबी को "एल्गोरिदम" के बिना निर्यात किया :) :)
एंटोनके

BTW स्विच --eventsको इवेंट शेड्यूलर ईवेंट्स को डंप करने की आवश्यकता होती है, और TRIGGERs को हमेशा निर्यात किया जाता है जब तक --skip-triggersकि निर्दिष्ट नहीं किया जाता है ( 7.4.5.3 डंपिंग संग्रहित कार्यक्रमों के अनुसार )
AntonK

10

इस आदेश को अपने डेटाबेस को निर्यात करने के लिए दें, इसमें तारीख भी शामिल होगी

mysqldump -u[username] -p[userpassword] --databases yourdatabase | gzip > /home/pi/database_backup/database_`date '+%m-%d-%Y'`.sql.gz

(-p के बाद कोई स्थान नहीं)


ध्यान दें, कि निर्दिष्ट --databasesके रूप में बयान दर्ज हो जाएगा CREATE DATABASE XYZ;और USE XYZ;है, जो काम जब ... एक और नाम के साथ एक और डीबी में एसक्यूएल का आयात नहीं है
AntonK

8

मैंने अपना wamp सर्वर डी: ड्राइव में स्थापित किया है, इसलिए यू को यूआर कमांड लाइन से निम्न पथ पर जाना है -> (और अगर आपने यू में w w को c: ड्राइव में स्थापित किया है तो बस d: wtih c: here को बदलें)

D:\>cd wamp
D:\wamp>cd bin
D:\wamp\bin>cd mysql
D:\wamp\bin\mysql>cd mysql5.5.8 (whatever ur verserion will be displayed here use keyboard Tab button and select the currently working mysql version on your server if you have more than one mysql versions)
D:\wamp\bin\mysql\mysql5.5.8>cd bin
D:\wamp\bin\mysql\mysql5.5.8\bin>mysqldump -u root -p password db_name > "d:\backupfile.sql"

यहाँ रूट मेरे phpmyadmin का उपयोगकर्ता है, पासवर्ड phpmyadmin के लिए पासवर्ड है, इसलिए यदि u ने रूट के लिए कोई पासवर्ड सेट नहीं किया है तो उस जगह पर कुछ भी नहीं टाइप किया गया है, db_name डेटाबेस है (जिसके लिए डेटाबेस यूआर बैकअप ले रहा है), backupfile.sql है वह फ़ाइल जिसमें आप ur डेटाबेस का बैकअप चाहते हैं और आप अपने कंप्यूटर पर किसी अन्य स्थान से बैकअप फ़ाइल स्थान (d: \ backupfile.sql) भी बदल सकते हैं


मुझे ऐसा करने के लिए सभी तरीकों में से, यह उत्तर केवल वही है जो मेरे लिए काम करता है। मैं MySQL संस्करण 5.6 का उपयोग कर रहा हूं, इसलिए पथ प्रॉम्प्ट ... \ MySQL \ MySQL सर्वर 5.6 \ bin कमांड प्रॉम्प्ट के लिए है। आपको अपने MySQL व्यवस्थापक उपयोगकर्ता नाम और पासवर्ड का उपयोग करना होगा, जो किसी विशेष डेटाबेस के लिए निर्दिष्ट हैं वे काम नहीं करेंगे। शुक्रिया सचिन। यहां तक ​​कि v.5.6 के लिए MySQL मैनुअल में निर्देश काम नहीं करते हैं। वहां सिंटैक्स अधूरा है।
मैक्स वेस्ट

क्या यह वास्तव में -pऔर के बीच की जगह के साथ काम करता है password?
डेविस


4

इन सभी समाधानों के साथ समस्या (का उपयोग करके) > रीडायरेक्टर चरित्र ) के है कि आप अपने डंप को स्टडआउट से लिखते हैं जो आपके डेटाबेस के कुछ पात्रों के एन्कोडिंग को तोड़ सकता है।

यदि आपके पास वर्ण एन्कोडिंग समस्या है। जैसे कि :

त्रुटि 1064 (42000): आपके SQL सिंटैक्स में एक त्रुटि है; पास के उपयोग के लिए सही सिंटैक्स के लिए अपने MySQL सर्वर संस्करण से मेल खाने वाले मैनुअल की जाँच करें ...

फिर, आप उपयोग करना चाहिए-r विकल्प फ़ाइल लिखने के लिए।

माई एसक्यूएल

mysqldump -u user -pyour-password-without-space-between-letter-p-and-your-password --default-character-set=utf8 --host $HOST database-name -r dump.sql

डॉकर का उपयोग करना

docker exec --rm -v $pwd:dump -it mysql:5:7 mysqldump -u user -pyour-password-without-space-between-letter-p-and-your-password --default-character-set=utf8 --host $HOST database-name -r dump/dump.sql

नोट: यह वर्तमान पथ को उदाहरण के अंदर डंप के रूप में दिखाता है।

हमें जवाब मिल गया यहाँ

इसके विपरीत, <अपने डंप को अपने डेटाबेस में आयात करने के लिए उपयोग न करें , फिर से, आपके गैर-यूटीएफ 8 पात्रों को पारित नहीं किया जा सकता है; लेकिन स्रोत विकल्प पसंद करते हैं।

mysql -u user -pYourPasswordYouNowKnowHow --default-character-set=utf8 your-database
mysql> SET names 'utf8'
mysql> SOURCE dump.sql

1

वाक्य - विन्यास

(mysqldump.exe full path) -u (user name) -p (password) (database name) > (export database file full path)

उदाहरण

c:>d:\wamp\bin\mysql\mysql5.6.12\bin\mysqldump.exe -u root -p mydbname > d:\mydb.sql

जहाँ d: \ wamp \ bin \ mysql \ mysql5.6.12 \ bin \ mysqldump.exe आपका वास्तविक mysqldump.exe पथ होगा, mydbname डेटाबेस का नाम है जिसे आप निर्यात करना चाहते हैं और d: \ mydb.sql वह मार्ग है जहाँ जहाँ आप निर्यात किए गए डेटाबेस को संग्रहीत करना चाहते हैं।


0

मैंने wamp सर्वर का उपयोग किया है। मैंने कोशिश की

c:\wamp\bin\mysql\mysql5.5.8\bin\mysqldump -uroot -p db_name > c:\somefolder\filename.sql

root mysql के लिए मेरा उपयोगकर्ता नाम है, और यदि आपके पास कोई पासवर्ड है, तो इसके साथ निर्दिष्ट करें:

-p[yourpassword]

मुझे भरोसा है ये काम करेगा।


--पासवर्ड का उपयोग करने की आवश्यकता है यदि आप पासवर्ड टाइप करने के लिए
ट्रिंग

0

विंडोज़ ओएस के लिए :

जब आपको mysqldump कमांड निष्पादित करने का प्रयास करते समय त्रुटि 1064 mysql (42000) मिलती है , तो वर्तमान टर्मिनल से बाहर निकलें। और mysqldump कमांड निष्पादित करें।

mysql>exit 
c:\xampp\mysql\bin>mysqldump -uroot -p --databases [database_name] > name_for_export_db.sql

0

मैं db के डंप को लेने की कोशिश कर रहा था जो कि docker पर चल रहा था और उसी को प्राप्त करने के लिए नीचे दिए गए कमांड के साथ आया:

docker exec <container_id/name>/ usr / bin / mysqldump -u <db_username>--password =<db_password> db_name > .sql

उम्मीद है की यह मदद करेगा!


-2

आप इस लिंक पर दिए गए टर्मिनल से किसी भी डेटाबेस को निर्यात या आयात करने के लिए इस स्क्रिप्ट का उपयोग कर सकते हैं : https://github.com/Ridhwanluthra/mysql_import_export_script/blob/master/mysql_export_export_script.sh

echo -e "Welcome to the import/export database utility\n"
echo -e "the default location of mysqldump file is: /opt/lampp/bin/mysqldump\n"
echo -e "the default location of mysql file is: /opt/lampp/bin/mysql\n"
read -p 'Would like you like to change the default location [y/n]: ' location_change
read -p "Please enter your username: " u_name
read -p 'Would you like to import or export a database: [import/export]: ' action
echo

mysqldump_location=/opt/lampp/bin/mysqldump
mysql_location=/opt/lampp/bin/mysql

if [ "$action" == "export" ]; then
    if [ "$location_change" == "y" ]; then
        read -p 'Give the location of mysqldump that you want to use: ' mysqldump_location
        echo
    else
        echo -e "Using default location of mysqldump\n"
    fi
    read -p 'Give the name of database in which you would like to export: ' db_name
    read -p 'Give the complete path of the .sql file in which you would like to export the database: ' sql_file
    $mysqldump_location -u $u_name -p $db_name > $sql_file
elif [ "$action" == "import" ]; then
    if [ "$location_change" == "y" ]; then
        read -p 'Give the location of mysql that you want to use: ' mysql_location
        echo
    else
        echo -e "Using default location of mysql\n"
    fi
    read -p 'Give the complete path of the .sql file you would like to import: ' sql_file
    read -p 'Give the name of database in which to import this file: ' db_name
    $mysql_location -u $u_name -p $db_name < $sql_file
else
    echo "please select a valid command"
fi
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.