सवाल मैं अपने डेटाबेस में sql.gz फ़ाइल कैसे लोड करूं? (आयात)


मैं एक gzipped एसक्यूएल फ़ाइल सीधे mysql में आयात करने की कोशिश कर रहा हूँ। क्या यह सही तरीका है?

mysql -uroot -ppassword mydb > myfile.sql.gz

118
2018-05-03 07:06


मूल


प्रश्न के gzip पक्ष को भी अनदेखा करते हुए, आपका तीर गलत तरीके से इंगित कर रहा है ... - Matt Fletcher


जवाब:


zcat /path/to/file.sql.gz | mysql -u 'root' -p your_database

> के आउटपुट लिखेंगे mysql पर आदेश stdout फ़ाइल में myfile.sql.gz जो शायद आप नहीं चाहते हैं। इसके अतिरिक्त, यह आदेश आपको MySQL उपयोगकर्ता "रूट" के पासवर्ड के लिए संकेत देगा।


186
2018-05-03 07:10



एक अच्छी सुरक्षा प्रैक्टिस के रूप में, मैं कमांड लाइन पर अपना पासवर्ड डालूंगा, मैं mysql को इसके लिए पूछूंगा। - Prof. Moriarty
या इससे भी बेहतर: बनाएँ ~/.my.cnf प्रमाण पत्र के साथ। ;) - joschi
@Prof के रूप में। Moriarty बताता है, आप के माध्यम से पासवर्ड का उपयोग न करने के लिए आदेश को संशोधित कर सकते हैं zcat /path/to/file.sql.gz | mysql -u 'root' -p your_database। यह पता चलेगा कि अंतिम पैरामीटर वह डेटाबेस है जिसका आप उपयोग करना चाहते हैं, न कि आपका पासवर्ड। - bafromca
@ प्रो। मोरारर्टी की टिप्पणी को थोड़ा सा सही करने के लिए, एक अच्छी सुरक्षा अभ्यास होगी नहीं कमांड लाइन पर अपना पासवर्ड डालें (जहां यह इतिहास में संग्रहीत होगा, या आपके कंधे पर देखा जाएगा), और MySQL को इसके लिए पूछने दें। अकेले-फ्लैग का कारण MySQL को पासवर्ड के लिए तत्काल पूछने का कारण बन जाएगा। - George
कुछ ऐसा करने के लिए +1 जो हानिकारक डेटाबेस डंप संपीड़ित छोड़ देता है - Dmitri DB


Sql.gz फ़ाइल आयात करते समय प्रगति पट्टी प्रदर्शित करने के लिए, डाउनलोड करें pv और निम्न का उपयोग करें:

pv mydump.sql.gz | gunzip | mysql -u root -p

CentOS / RHEL में, आप के साथ पीवी स्थापित कर सकते हैं yum install pv

डेबियन / उबंटू में apt-get install pv

मैक में, brew install pv


66
2017-11-03 19:46



pv लगता है कि उबंटू रिपोज़ में भी (कम से कम 12.04 एलटीएस में) है, लेकिन फिर आपको करने की ज़रूरत है sudo apt-get install pv इसे पाने के लिए। धन्यवाद बंजर, यह बड़े डेटाबेस आयात के लिए एकदम सही है! - toon81
मुझे पीवी mydump.sql.gz चलाने के लिए था Gunzip | mysql -u रूट my_database_name। ऐसा इसलिए था क्योंकि मैं टेबल आयात कर रहा था और मेरे रूट उपयोगकर्ता के लिए पासवर्ड सेट नहीं है - Cristiano Mendonça
मैक में, brew install pv - score


आयात करने से पहले डेटाबेस फ़ाइल को अनजिप करना सबसे आसान तरीका है। जैसा कि उल्लेख किया गया है @Prof। मोरियार्टी आपको कमांड में पासवर्ड निर्दिष्ट नहीं करना चाहिए (आपको पासवर्ड के लिए कहा जाएगा)। यह आदेश से लिया गया webcheatsheet एक बार में डेटाबेस को अनजिप और आयात करेगा:

gunzip < myfile.sql.gz | mysql -u root -p mydb

47
2017-11-22 15:51



इसके अलावा, आयात करने से पहले mydb को बनाया जाना चाहिए। यह आपके लिए डीबी नहीं बनाता है। - Siddhartha
मुझे अपनी पाइपिंग मिली gunzip 10 जीबी संपीड़ित फाइल पर मेरा आयात स्थिर हो गया। सुनिश्चित नहीं है कि यह स्मृति बाधाओं या किसी चीज़ के कारण है, लेकिन मैं भविष्य में एक समय में एक कदम करने के पक्ष में गलती करूंगा। - Ryan Tuck
@RyanTuck कि इस तरह की प्रक्रियाओं की सीमा को धक्का दे रहा है :) - icc97
@ सिद्धार्थ यह एसक्यूएल डंप फ़ाइल पर निर्भर करता है। कभी-कभी वे डेटाबेस विवरण बनाते हैं। - rooby
@rooby जो समझ में आता है। - Siddhartha


अगर आपको कोई त्रुटि मिलती है zcat, जिसमें त्रुटि संदेश में अतिरिक्त प्रत्यय वाला फ़ाइल नाम होता है .Z, तो उपयोग करने का प्रयास करें gzcat इसके बजाए, जैसा कि वर्णन किया गया है https://stackoverflow.com/questions/296717/zcat-wont-unzip-files-properly


10
2017-07-08 13:59





यह भी जांचें कि SQL फ़ाइल में कोई उपयोगकर्ता-कथन है या नहीं। कमांड लाइन पर डेटाबेस निर्दिष्ट करना गारंटी नहीं देता है कि SQL फ़ाइल के भीतर एक अलग गंतव्य निर्दिष्ट होने पर डेटा समाप्त होता है।


3
2018-05-03 11:28



आपको बस इस तरह के आदेश को विस्तारित करने की आवश्यकता है: pv mydump.sql.gz | gunzip | mysql -u root -p  your_database। स्वीकृत उत्तर इस दृष्टिकोण का उपयोग करता है। - bafromca


मैकोज़ पर, मैंने इसका इस्तेमाल किया:

zcat < [Database].sql.gz | mysql -u root -p [Database Name in MySQL]

अपना पासवर्ड दर्ज करें, और वॉयला!


3
2017-11-28 07:41





के लिये bzip2 संपीड़ित फ़ाइलें (.sql.bz2), का उपयोग करें:

bzcat <file> | mysql -u <user> -p <database>

या

pv <file> | bunzip2 | mysql -u <user> -p <database>

प्रगति पट्टी देखने के लिए।


1
2017-08-01 15:25





आप उपयोग कर सकते हैं -c, --stdout, --to-stdout का विकल्प gunzip आदेश

उदाहरण के लिए:

gunzip -c file.sql.gz | mysql -u root -p database

0
2017-09-16 06:03