Làm thế nào để bạn chạy một truy vấn duy nhất thông qua mysql từ dòng lệnh?


157

Tôi đang tìm cách để có thể chạy một truy vấn duy nhất trên một máy chủ từ xa trong một tác vụ theo kịch bản.

Ví dụ, theo trực giác, tôi sẽ tưởng tượng nó sẽ đi như thế nào:

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

Câu trả lời:


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

3
C: \ Tệp chương trình (x86) \ MySQL \ MySQL Server 5.7 \ bin> mysql.exe -u root -p -e "truy vấn của tôi" ----> ERROR 1045 (28000): Truy cập bị từ chối cho người dùng 'root' @ 'localhost' (sử dụng mật khẩu: CÓ)
Dr.jacky

2
Đây phải là kết quả đầu tiên trong một tìm kiếm google (cho "mysql exec sql từ dòng lệnh") chứ không phải trang web mysql khổng lồ!
Guillaume Bois

4
Ngoài ra, nếu bạn muốn loại bỏ định dạng bảng và tiêu đề, bạn có thể sử dụngmysql -u <user> -p -B --disable-column-names -e 'select * from schema.table'
dvlcube

2
@tinybyte Giả sử Linux: Insinde doublequote dấu hoa thị *được mở rộng cho tất cả các tệp trong thư mục hiện tại, trong khi việc mở rộng này không xảy ra trong các câu đơn, đó là lý do tại sao. Doublequote sẽ làm việc cho quesries mà không có *.
NobbZ

2
@ Dr.jacky Tôi chắc chắn rằng bạn không thực sự có nhu cầu nữa, nhưng trong tương lai, nếu người dùng root của bạn không có mật khẩu, đừng chuyển tùy chọn -p là trống, chỉ cần không vượt qua nómysql.exe -u root -e "my query"
solidau

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

Từ bản in sử dụng:

-e, --execute=name
Thực thi lệnh và thoát. (Vô hiệu hóa --forcevà tập tin lịch sử)


15

Dưới đây là cách bạn có thể làm điều đó với thủ thuật shell tuyệt vời:

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

'<<<' hướng dẫn shell lấy bất cứ thứ gì theo sau nó như stdin, tương tự như đường ống từ tiếng vang.

sử dụng cờ -t để bật đầu ra định dạng bảng


13

Nếu đó là một truy vấn bạn chạy thường xuyên, bạn có thể lưu trữ nó trong một tệp. Sau đó, bất cứ lúc nào bạn muốn chạy nó :

mysql < thefile

(với tất cả các cờ đăng nhập và cơ sở dữ liệu tất nhiên)


6
echo "select * from users;" | mysql -uroot -p -hslavedb.mydomain.com mydb_production
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.