สร้างฐานข้อมูล MySQL ด้วยหนึ่งบรรทัดในทุบตี


24

เป็นไปได้หรือไม่ที่จะสร้างฐานข้อมูลเปล่าด้วยหนึ่งบรรทัดคำสั่งใน bash?

ความพยายามในมือใหม่ของฉันล้มเหลว:

mysql -uroot $(create database mydatabase;)

ท้ายที่สุดฉันต้อง

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

คำตอบ:


32

@ คำตอบของ Nitrodist จะใช้ได้ แต่มันเป็นปัญหาทางวิศวกรรมมากไป ไคลเอนต์บรรทัดคำสั่งของ MySQL รองรับ-eสวิตช์ที่มีประโยชน์มากเช่น:

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

แน่นอนคุณสามารถแทนที่ SQL ที่ถูกต้องลงไปได้


ขอโทษฉันแก้ไขคำตอบของฉันหลังจากการวิจัยเพิ่มเติม
Nitrodist

5
ไม่จำเป็นต้องใส่เครื่องหมายคำพูดmysql -uroot -e "create database foo"
IanVaughan

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;"
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.