MySQL: कमांड लाइन से.sql फ़ाइल को निर्यात और आयात कैसे करें?




command-line command-line-arguments (6)

मैं कमांड लाइन से MySQL डेटाबेस से और .sql फ़ाइल को निर्यात और आयात करना चाहता हूं।

MySQL में .sql फ़ाइल निर्यात करने के लिए कोई आदेश है? तो मैं इसे कैसे आयात करूं?

आयात करते समय, बाधाएं हो सकती हैं जैसे विदेशी कुंजी चेक सक्षम / अक्षम करें या केवल तालिका संरचना निर्यात करें

क्या हम उन विकल्पों को mysqldump साथ सेट कर सकते हैं?


निर्यात करने को

यदि यह एक संपूर्ण डीबी है, तो:

$ mysqldump -u [uname] -p[pass] db_name > db_backup.sql

यदि यह सभी डीबी है, तो:

$ mysqldump -u [uname] -p[pass] --all-databases > all_db_backup.sql

यदि यह डीबी के भीतर विशिष्ट सारणी है, तो:

$ mysqldump -u [uname] -p[pass] db_name table1 table2 > table_backup.sql

आप gzip का उपयोग करके आउटपुट को ऑटो-कंप्रेसिंग तक भी जा सकते हैं (यदि आपका डीबी बहुत बड़ा है):

$ mysqldump -u [uname] -p[pass] db_name | gzip > db_backup.sql.gz

यदि आप इसे दूरस्थ रूप से करना चाहते हैं और आपके पास प्रश्न में सर्वर तक पहुंच है, तो निम्न कार्य करेगा (MySQL सर्वर पोर्ट 3306 पर है):

$ mysqldump -P 3306 -h [ip_address] -u [uname] -p[pass] db_name > db_backup.sql

आयात करने के लिए

एसक्यूएल डेटा फ़ाइल आयात करने के लिए निम्न आदेश टाइप करें:

$ mysql -u username -p -h localhost DATA-BASE-NAME < data.sql

इस उदाहरण में, उपयोगकर्ता नाम के रूप में बैठकर 'ब्लॉग' डेटाबेस में 'data.sql' फ़ाइल आयात करें:

$ mysql -u sat -p -h localhost blog < data.sql

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

$ mysql -u username -p -h 202.54.1.10 databasename < data.sql

या mysql.cyberciti.biz जैसे होस्टनाम का उपयोग करें

$ mysql -u username -p -h mysql.cyberciti.biz database-name < data.sql

यदि आपको पता नहीं है कि डेटाबेस नाम या डेटाबेस नाम एसक्यूएल डंप में शामिल है तो आप निम्नानुसार कुछ कोशिश कर सकते हैं:

$ mysql -u username -p -h 202.54.1.10 < data.sql

संदर्भ लें: http://dev.mysql.com/doc/refman/5.6/en/mysqldump.html

यदि आप एक जीयूआई उपकरण चाहते हैं तो आप शायद SQLyog का उपयोग कर सकते हैं


mysqldump डेटाबेस घटनाओं, ट्रिगर और दिनचर्या को डंप नहीं करेगा जब तक कि अलग-अलग डेटाबेस को डंप करते समय स्पष्ट रूप से कहा न जाए;

mysqldump -uuser -p db_name --events --triggers --routines > db_name.sql

एक फ़ाइल में एक संपूर्ण डेटाबेस डंप करें:

mysqldump -u USERNAME -p password DATABASENAME > FILENAME.sql

एसक्यूएल डेटा फ़ाइल आयात करने के लिए निम्न आदेश टाइप करें:

$ mysql -u username -p -h localhost DATA-BASE-NAME < data.sql

इस उदाहरण में, उपयोगकर्ता नाम के रूप में vivek का उपयोग करके 'blog.sql' फ़ाइल को 'ब्लॉग' डेटाबेस में आयात करें:

$ mysql -u vivek -p -h localhost blog < data.sql

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

$ mysql -u username -p -h 202.54.1.10 databasename < data.sql

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

mysqldump -u username -p databasename > filename.sql

प्रत्येक मामले में < और > प्रतीकों पर ध्यान दें।


चूंकि मेरे पास उच्चतम पोस्ट के बाद टिप्पणी करने के लिए पर्याप्त प्रतिष्ठा नहीं है, इसलिए मैं यहां जोड़ता हूं।

'|' का प्रयोग करें डिस्क स्थान बचाने के लिए लिनक्स मंच पर।

thx @ हरिबू, घटनाओं / ट्रिगर / routints पैरामीटर जोड़ें

mysqldump -x -u [uname] -p[pass]  -C --databases db_name  --events --triggers --routines | sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/ '  | awk '{ if (index($0,"GTID_PURGED")) { getline; while (length($0) > 0) { getline; } } else { print $0 } }'  | grep -iv 'set @@' | trickle -u 10240 mysql -u username -p -h localhost DATA-BASE-NAME

कुछ मुद्दे / टिप्स:

त्रुटि: ...... LOCK टैबलेट का उपयोग करते समय मौजूद नहीं है

# --lock-all-tables,-x , this parameter is to keep data consistency because some transaction may still be working like schedule.
# also you need check and confirm: grant all privileges on *.* to [email protected]"%" identified by "Passwd";

लाइन 866 पर ERROR 2006 (HY000): MySQL सर्वर mysqldump चला गया है: लिखने पर errno 32 मिला

# set this values big enough on destination mysql server, like: max_allowed_packet=1024*1024*20
# use compress parameter '-C'
# use trickle to limit network bandwidth while write data to destination server

लाइन 32730 पर ERROR 1419 (HY000): आपके पास सुपर विशेषाधिकार नहीं है और बाइनरी लॉगिंग सक्षम है (आप कम सुरक्षित log_bin_trust_function_creators चर का उपयोग करना चाह सकते हैं)

# set SET GLOBAL log_bin_trust_function_creators = 1;
# or use super user import data

लाइन 138 पर त्रुटि 1227 (42000): एक्सेस अस्वीकार कर दी गई; इस ऑपरेशन के लिए आपको सुपर विशेषाधिकार (कम से कम एक) की आवश्यकता है mysqldump: लिखने पर त्रुटि 32

# add sed/awk to avoid some privilege issues

उममीद है कि इससे मदद मिलेगी!


प्रयत्न

mysqldump databaseExample > file.sql




sqlcommand