बैश में एक लाइन के साथ mysql डेटाबेस बनाएं


24

क्या बैश में कमांड की एक पंक्ति के साथ एक खाली डेटाबेस बनाना संभव है?

मेरे नौसिखिया प्रयास विफल रहे हैं:

mysql -uroot $(create database mydatabase;)

मैं समाप्त कर रहा हूं

  • mysql -uroot
  • create database mydatabase;
  • exit;

जवाबों:


32

@ नाइट्रोडिस्ट का जवाब काम करेगा, लेकिन यह समस्या का इंजीनियरिंग है। MySQL के कमांड-लाइन क्लाइंट बहुत आसान -eस्विच का समर्थन करता है , जैसे:

mysql -uroot -e "create database 'foo'"

आप निश्चित रूप से किसी भी वैध एसक्यूएल को वहां ले जा सकते हैं।


खेद है कि मैंने कुछ और शोध के बाद अपना उत्तर संपादित किया।
नाइट्रोडिस्ट 25'11

5
उद्धरण की आवश्यकता नहीं हैmysql -uroot -e "create database foo"
इयानविघन

1
हां, अतिरिक्त एकल उद्धरणों का उपयोग करके मुझे ए ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''foo'' at line 1। उनके बिना यह ठीक काम करता है। धन्यवाद @IanVaughan
leymannx

14

MySQL के दस्तावेज के अनुसार, mysqlसे कमांड ले सकते हैंstdin

shell> mysql -uroot < script.sql > output.tab

इसे पूरा करने के लिए आप प्रक्रिया प्रतिस्थापन का उपयोग कर सकते हैं :

shell> mysql -uroot <(echo "create database mydatabase;") 

या यदि आप बस के लिए यह पाइप कर सकते हैं stdinकी mysqlसामान्य रूप से:

shell> echo "create database mydatabase;" | mysql -uroot

व्यक्तिगत रूप से इसका परीक्षण नहीं किया जा सकता है, लेकिन मुझे लगता है कि यह काम करना चाहिए।

संपादित करें: एक अन्य विकल्प विकल्प का उपयोग करना -eहै, यहां निर्दिष्ट है , जैसे:

shell> mysql -uroot -e "create database mydatabase;"
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.