क्वेरी द्वारा MySQL डंप


220

क्या mysqldumpएकल द्वारा करना संभव है SQL query?

मेरा मतलब पूरे डेटाबेस को डंप करना है, जैसे phpmyadminआप निर्यात करते हैंSQL

जवाबों:


285

mysqldump नहीं, बल्कि mysql cli ...

mysql -e "select * from myTable" -u myuser -pxxxxxxxxx mydatabase

यदि आप चाहें तो आप इसे एक फ़ाइल पर पुनर्निर्देशित कर सकते हैं:

mysql -e "select * from myTable" -u myuser -pxxxxxxxx mydatabase > mydumpfile.txt

अपडेट: मूल पोस्ट से पूछा गया कि क्या वह क्वेरी से डेटाबेस से डंप कर सकता है। उन्होंने जो पूछा और जो मतलब था वह अलग था। वह वास्तव में सभी तालिकाओं को सिर्फ mysqldump करना चाहता था।

mysqldump --tables myTable --where="id < 1000"

22
कैसे इस डंप txt फ़ाइल को पुनर्स्थापित करने के लिए?
विवेक एस।

3
mysql -e दृष्टिकोण की कोशिश करने वालों के लिए। मुझे मेरे लिए काम करने के लिए स्क्रिप्ट को थोड़ा अनुकूलित करना पड़ा। इसे चलाने पर आपको sql पासवर्ड दर्ज करना होगा। mysql -e "तालिका से चुनें * जहाँ क्वेरी = 'asdasd'" -u रूट -p --database = DBNAME> text.txt
RichardW11

13
आप क्वेरी के लिए एक नई तालिका (क्रिएट टेबल सेलेक्ट) बना सकते हैं, और फिर उस तालिका को mysqldump के साथ डंप कर सकते हैं। इस तरह आप बाद में इसे आसानी से बहाल कर सकते हैं।
क्वानो

1
जो mysqldump का उपयोग करना चाहता है और फ़ाइल को पुनर्स्थापित करना चाहता है, उसके लिए यहां एक नज़र डालें: stackoverflow.com/a/2431936/411786
Syco

2
My -ql के साथ निर्यात किए गए डेटा को टैब-सीमांकित के रूप में आउटपुट के लिए -B विकल्प के साथ निर्यात करने के लिए, mysqlimport --ignore-lines = 1 --fields-terminated-by = '\ t' चलाएँ। देखें: stackoverflow.com/a/17071108/1676044
केविन बॉर्डर्स

259

यह काम करना चाहिए

mysqldump --databases X --tables Y --where="1 limit 1000000"

4
एक बेहतर उदाहरण कुछ ऐसा हो सकता है जो वास्तव में एक खंड के समान दिखता है, जैसे कि - जैसे = "myColumn <1000" - हर तालिका की पहली मिलियन पंक्तियाँ अनुरोध करने के लिए एक अजीब बात लगती हैं;)
ijw

@ विज यदि आप क्या करना चाहते हैं, तो अपनी तालिका का आसानी से पुनर्निवेश-सक्षम बैकअप लेना है, आपको संभवतः सीमा के अलावा किसी अन्य चीज़ के लिए एक खंड की आवश्यकता नहीं है।
थॉमस अहले

3
@ सगोत्रन: ठीक है, यह एक प्रश्न नहीं है। शायद इसीलिए।
ऑर्बिट

80
!! चेतावनी !! mysqldump निर्यातित फ़ाइल के शीर्ष पर एक 'DROP टेबल' कमांड जोड़ता है। इसका मतलब है कि यदि आप एक आंशिक निर्यात करते हैं तो इसे फिर से आयात करें, आप सब कुछ खो देंगे। खैर, मैंने किया।
तमलिन

35
हां, सहेजी गई डेटा फ़ाइल से पुनर्स्थापित करते समय अपनी तालिका के सभी डेटा को नहीं हटाने के लिए , सुनिश्चित करें कि आप --no-create-infoविकल्प में जोड़ते हैं । एक उदाहरण के लिए मेरा जवाब देखें ।
गैरी

71

आप इस तरह csv के रूप में एक क्वेरी डंप कर सकते हैं:

SELECT * from myTable
INTO OUTFILE '/tmp/querydump.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'

8
क्या होगा अगर मैं कई टेबल डंप करना चाहता हूं।
SIFE

11
यह मशीन पर एक फ़ाइल बनाता है जिस पर MySQL डेटाबेस चल रहा है। इसलिए, यदि आप दूरस्थ कंसोल से क्वेरी कर रहे हैं तो यह विधि विफल हो जाती है। यदि दूरस्थ कंसोल से भी ऐसा करने का कोई तरीका है, तो कृपया मुझे इसके बारे में बताएं।
16

2
यह फ़ाइल को कहाँ सहेजता है?
टेकलॉर्ड

1
@dknight मैं मान रहा हूं कि आप टर्मिनल कंसोल के माध्यम से एक रिमोट कंसोल का उपयोग करते हैं, जिस स्थिति में आप scpकनेक्शन समाप्त होने के बाद डंप की गई फ़ाइल को पुनः प्राप्त कर सकते हैं । यहाँ एक उदाहरण है। scp user@remote-server.com:/tmp/querydump.csv ~/local.csv
ल्यूक

यह असुरक्षित प्रतीत होता है: # 1290 - MySQL सर्वर - secureure-file-private विकल्प के साथ चल रहा है, इसलिए यह इस कथन को निष्पादित नहीं कर सकता है
mikep

64

एक क्वेरी का उपयोग करके एक तालिका को डंप करें:

mysqldump mydatabase mytable --where="mycolumn = myvalue" --no-create-info > data.sql

एक पूरी तालिका डंप करें:

mysqldump mydatabase mytable > data.sql

टिप्पणियाँ:

  • प्रतिस्थापित करें mydatabase, mytableऔर जहां अपने वांछित मूल्यों के साथ बयान।
  • डिफ़ॉल्ट रूप से, इसके आउटपुट में mysqldumpशामिल होंगे DROP TABLEऔर CREATE TABLEबयान करेंगे । इसलिए, यदि आप सहेजी गई डेटा फ़ाइल से पुनर्स्थापित करते समय अपनी तालिका के सभी डेटा को नहीं हटाना चाहते हैं , तो सुनिश्चित करें कि आप --no-create-infoविकल्प का उपयोग करते हैं ।
  • आपको अपने इच्छित डेटाबेस होस्ट, उपयोगकर्ता और पासवर्ड को क्रमशः निर्दिष्ट करने के लिए ऊपर दिए गए उदाहरण कमांड के लिए उपयुक्त -h, -uऔर -pविकल्पों को जोड़ने की आवश्यकता हो सकती है।

38

आप mysqldump पर उस जगह का उपयोग कर सकते हैं, जिसके लिए आप एक आउटपुट तैयार कर रहे हैं:

mysqldump -u root -p test t1 --where="1=1 limit 100" > arquivo.sql

Test.t1 से अधिकांश 100 पंक्तियों को डेटाबेस टेबल से डंप किया जाएगा।

चीयर्स, डब्ल्यूबी


6

यदि आप किसी फ़ाइल में अपने अंतिम एन रिकॉर्ड की मात्रा को निर्यात करना चाहते हैं, तो आप निम्नलिखित चला सकते हैं:

mysqldump -u user -p -h localhost --where "1=1 ORDER BY id DESC LIMIT 100" database table > export_file.sql

उपरोक्त पिछले 100 रिकॉर्ड को export_file.sql में सहेज देगा, यह मानकर कि आप जिस तालिका से निर्यात कर रहे हैं, उसमें एक ऑटो-इंक्रेस्ड आईडी कॉलम है।

आपको उपयोगकर्ता, लोकलहोस्ट, डेटाबेस और टेबल वैल्यू को बदलना होगा। आप वैकल्पिक रूप से आईडी कॉलम और निर्यात फ़ाइल नाम बदल सकते हैं।


5

MySQL Workbench में GUI में भी यह सुविधा है। बस एक क्वेरी चलाएँ, निर्यात / आयात के बगल में स्थित सहेजें आइकन पर क्लिक करें:

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

फिर सूची में "SQL INSERT स्टेटमेंट (* .sql)" चुनें।

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

एक नाम दर्ज करें, सहेजें पर क्लिक करें, तालिका नाम की पुष्टि करें और आपके पास आपकी डंप फ़ाइल होगी।


3

यहाँ ऊपर से बहुत संयोजन मेरा वास्तविक व्यावहारिक उदाहरण है, दोनों मीटर और टाइमस्टैम्प के आधार पर रिकॉर्ड का चयन करना। मुझे सालों से इस कमांड की जरूरत है। वास्तव में जल्दी से निष्पादित।

mysqldump -uuser -ppassword main_dbo trHourly --where="MeterID =5406 AND TIMESTAMP<'2014-10-13 05:00:00'" --no-create-info --skip-extended-insert | grep  '^INSERT' > 5406.sql

-1

mysql क्वेरी परिणाम कमांड लाइन का निर्यात करें the

mysql -h120.26.133.63 -umiyadb -proot123 miya -e "select * from user where id=1" > mydumpfile.txt

यह ubuntu, command: mysql -h localhost -u root -p dbname -e "के लिए मेरे लिए काम कर रहा है जहाँ से id = 1 का चयन करें, जहाँ कर्मचारी = id = 1" --xml> / var / www / html / प्रोजेक्ट / बैकअप / db.xml
रमेश
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.