คุณจะเรียกใช้แบบสอบถามเดียวผ่าน mysql จากบรรทัดคำสั่งได้อย่างไร


157

ฉันต้องการให้สามารถเรียกใช้แบบสอบถามเดียวบนเซิร์ฟเวอร์ระยะไกลในงานสคริปต์

ตัวอย่างเช่นโดยสังหรณ์ใจฉันจะจินตนาการว่ามันจะเป็นอย่างไร:

mysql -uroot -p -hslavedb.mydomain.com mydb_production "select * from users;"

คำตอบ:


249
mysql -u <user> -p -e "select * from schema.table"

3
C: \ Program Files (x86) \ MySQL \ MySQL เซิร์ฟเวอร์ 5.7 \ bin> mysql.exe -u root -p -e "คำค้นหาของฉัน" ----> ข้อผิดพลาด 1045 (28000): การเข้าถึงถูกปฏิเสธสำหรับผู้ใช้ 'root' @ 'localhost' (ใช้รหัสผ่าน: ใช่)
Dr.jacky

2
นี่ควรเป็นผลลัพธ์แรกในการค้นหา google (สำหรับ "mysql exec sql จากบรรทัดคำสั่ง") และไม่ใช่ไซต์ mysql ขนาดใหญ่!
Guillaume Bois

4
นอกจากนี้หากคุณต้องการตัดส่วนหัวและรูปแบบตารางคุณสามารถใช้mysql -u <user> -p -B --disable-column-names -e 'select * from schema.table'
dvlcube

2
@tinybyte สมมติว่า Linux: Insinde doublequotes เครื่องหมายดอกจัน*ได้รับการขยายไปยังไฟล์ทั้งหมดในไดเรกทอรีปัจจุบันในขณะที่การขยายตัวนี้ไม่ได้เกิดขึ้นใน singlequotes นั่นคือเหตุผลว่าทำไม Doublequotes จะทำงานให้ quesries *โดยไม่ต้อง
NobbZ

2
@ Dr.jacky ฉันแน่ใจว่าคุณไม่ต้องการอีกต่อไป แต่สำหรับอนาคตหากผู้ใช้รูทของคุณไม่มีรหัสผ่านอย่าผ่านตัวเลือก -p ว่างเปล่าเพียงแค่ไม่ผ่านเลยmysql.exe -u root -e "my query"
solidau

29
mysql -uroot -p -hslavedb.mydomain.com mydb_production -e "select * from users;"

จากการพิมพ์การใช้งาน:

-e, --execute=name
รันคำสั่งและออก (ปิดใช้งาน--forceและไฟล์ประวัติ)


15

นี่คือวิธีที่คุณสามารถทำได้ด้วยเคล็ดลับ shell cool:

mysql -uroot -p -hslavedb.mydomain.com mydb_production <<< 'select * from users'

'<<<' สั่งให้เชลล์ใช้สิ่งใดก็ตามที่มันตามมาในรูปแบบ stdin คล้ายกับ piping จาก echo

ใช้แฟล็ก -t เพื่อเปิดใช้งานเอาต์พุตรูปแบบตาราง


13

หากเป็นคำถามที่คุณเรียกใช้บ่อยคุณสามารถเก็บไว้ในไฟล์ จากนั้นเมื่อใดก็ตามที่คุณต้องการเรียกใช้ :

mysql < thefile

(พร้อมกับการล็อกอินและแฟล็กฐานข้อมูลทั้งหมดของหลักสูตร)


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