2010-08-29 14 views
15

मेरे पास 5 डेटाबेस के साथ एक MySQL डंप है और यह जानना चाहेंगे कि उनमें से केवल एक आयात करने का कोई तरीका है (mysqldump या अन्य का उपयोग कर)।मैं एक डेटाबेस को एक डेटाबेस से पुनर्स्थापित कैसे करूं जिसमें एकाधिक डेटाबेस हैं?

सुझावों की सराहना की।

+0

मुझे नहीं लगता कि वहां है। सभी डेटाबेस आयात करना, और जिसे आप रखना चाहते हैं उसे छोड़कर हर किसी को छोड़ना, सबसे अच्छी चीज है जो आप सोच सकते हैं - लेकिन आप कभी नहीं जानते, शायद कोई –

उत्तर

15

आप sed के माध्यम से डंप किए गए एसक्यूएल को पाइप कर सकते हैं और इसे आपके लिए डेटाबेस निकाल सकते हैं। कुछ की तरह:

cat mysqldumped.sql | \ 
sed -n -e '/^CREATE DATABASE.*`the_database_you_want`/,/^CREATE DATABASE/ p' | \ 
sed -e '$d' | \ 
mysql 

दो sed कमांड:

  1. केवल (दोनों CREATE DATABASE लाइनों सहित) CREATE DATABASE लाइनों के बीच मिलान लाइनों प्रिंट, और
  2. से पिछलेCREATE DATABASE लाइन हटाएं आउटपुट क्योंकि हम नहीं चाहते हैं कि mysqld दूसरा डेटाबेस बनाएं।

अपने डंप CREATE DATABASE लाइनों शामिल नहीं है, तो आप भी USE लाइनों के खिलाफ मिलान कर सकते हैं।

+0

एक पंक्ति में, और '-u' और '-p' विकल्पों के साथ देखें: 'बिल्ली सभी डेटाबेस dql | sed -n -e '/^डेटाबेस बनाएं। * \ 'the_database_you_want \' /,/^ डेटाबेस/पी बनाएँ। sed -e '$ d' | mysql -u my_username -p' –

27

आप mysql कमांड लाइन --one-डेटाबेस विकल्प का उपयोग कर सकते हैं।

निश्चित रूप से सावधान रहें जब आप ऐसा करते हैं।

आप mysql dumpsplitter का भी उपयोग कर सकते हैं।

+0

के साथ आता है, मैंने कोशिश की, लेकिन हमेशा त्रुटि मिली "त्रुटि 1049 (42000): अज्ञात डेटाबेस 'redmine' "। दस्तावेज़ीकरण में कहा गया है: "बाइनरी लॉग में अन्य डेटाबेस के अपडेट को छोड़ने के लिए यह उपयोगी है।" यह एक बाइनरी लॉग नहीं है (मुझे लगता है) तो यह काम नहीं करेगा। –

+1

मुझे इस सुविधा से संबंधित एक दिलचस्प बग रिपोर्ट मिली: http://bugs.mysql.com/bug.php?id=40477 –

+1

@ThePixel डेवलपर: एक खाली डेटाबेस पहले मौजूद होना आवश्यक है, फिर यह काम करता है। –

संबंधित मुद्दे