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


150

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

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

14
यहां तक ​​कि सवाल के गज़िप पक्ष की अनदेखी करते हुए, आपका तीर गलत तरीके से इशारा कर रहा है ...
मैट फ्लेचर

जवाबों:


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

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


15
एक अच्छे सुरक्षा अभ्यास के रूप में, मैं अपना पासवर्ड कमांड लाइन पर रखूंगा, मैं mysql को इसके लिए कहूंगा।
प्रो। मोरियार्टी

9
या इससे भी बेहतर: ~/.my.cnfक्रेडेंशियल्स के साथ बनाएँ । ;)
जोशी

5
जैसा कि @Prof। Moriarty विस्फोट करता है, आप पासवर्ड के माध्यम से उपयोग नहीं करने के लिए कमांड को संशोधित कर सकते हैं zcat /path/to/file.sql.gz | mysql -u 'root' -p your_database। यह पता चल जाएगा कि अंतिम पैरामीटर वह डेटाबेस है जिसका आप उपयोग करना चाहते हैं, न कि आपका पासवर्ड।
बेफ्रोमका

6
@ Prof.Moriarty की टिप्पणी को थोड़ा ठीक करने के लिए, एक अच्छा सुरक्षा अभ्यास मेरा पासवर्ड कमांड लाइन (जहां यह इतिहास में संग्रहीत किया जाएगा, या आपके कंधे पर देखा जाएगा) पर नहीं डालने के लिए होगा , और MySQL से इसके लिए पूछें। अकेले -p फ्लैग के कारण MySQL पासवर्ड के लिए संकेत देने के लिए कहेगा।
जॉर्ज

4
+1 कुछ ऐसा है जो लानत डेटाबेस को डंप करने के लिए छोड़ देता है
दिमित्री डीबी

81

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

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

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

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

मैक में, brew install pv


2
pvउबंटू रिपोज में भी लगता है (कम से कम 12.04 एलटीएस में यह है), लेकिन फिर से sudo apt-get install pvइसे प्राप्त करने के लिए आपको करने की आवश्यकता है। धन्यवाद बंजर, यह बड़े डेटाबेस आयात के लिए एकदम सही है!
toon81

मुझे pv mydump.sql.gz चलाना था gunzip | mysql -u root my_database_name। ऐसा इसलिए था क्योंकि मैं तालिकाओं का आयात कर रहा था और मेरे पास अपने मूल उपयोगकर्ता के लिए एक पासवर्ड सेट नहीं है
क्रिस्टियानो मेंडोंका

मैक में,brew install pv
स्कोर

54

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

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

1
साथ ही, आयात करने से पहले mydb बनाने की आवश्यकता है। यह आपके लिए db नहीं बनाता है।
सिद्धार्थ 23

मैंने पाया gunzipकि एक 10GB संकुचित फ़ाइल पर मेरी पाइपिंग के कारण मेरा आयात जम गया। यकीन नहीं है कि अगर यह स्मृति बाधाओं या कुछ और के कारण है, लेकिन मैं भविष्य में एक समय में एक कदम करने के पक्ष में गलत करूंगा।
रायन टक

@RyanTuck इस तरह की प्रक्रियाओं की सीमा को आगे बढ़ा रहा है :)
icc97

@ सिद्धार्थ जो कि sql डंप फ़ाइल पर निर्भर करता है। कभी-कभी वे डेटाबेस स्टेटमेंट बनाते हैं।
रॉबी

@ मर्यादा जो समझ में आती है।
सिद्धार्थ

12

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


5

MacOS पर, मैंने इसका उपयोग किया:

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

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


4

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


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

1

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

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

या

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

प्रगति बार देखने के लिए।


0

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

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

gunzip -c file.sql.gz | mysql -u root -p database
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.