Jak uruchomić pojedyncze zapytanie przez mysql z wiersza poleceń?

157

Szukam możliwości uruchomienia pojedynczego zapytania na zdalnym serwerze w zadaniu skryptowym.

Na przykład intuicyjnie wyobrażam sobie, że wyglądałoby to mniej więcej tak:

mysql -uroot -p -hslavedb.mydomain.com mydb_production "select * from users;"
Mateusz
źródło

Odpowiedzi:

249
mysql -u <user> -p -e "select * from schema.table"
RC.
źródło
3
C: \ Program Files (x86) \ MySQL \ MySQL Server 5.7 \ bin> mysql.exe -u root -p -e "moje zapytanie" ----> ERROR 1045 (28000): Odmowa dostępu dla użytkownika „root” @ „localhost” (używając hasła: TAK)
Dr.Jacky
2
Powinien to być pierwszy wynik w wyszukiwarce Google („mysql exec sql z wiersza poleceń”), a nie ogromna witryna mysql!
Guillaume Bois
4
Ponadto, jeśli chcesz usunąć nagłówek i format tabeli, możesz użyćmysql -u <user> -p -B --disable-column-names -e 'select * from schema.table'
dvlcube
2
@tinybyte Zakładając Linux: Insinde podwójnie cytuje gwiazdkę, która *jest rozszerzana na wszystkie pliki w bieżącym katalogu, podczas gdy to rozszerzenie nie występuje w pojedynczych cudzysłowach, to jest powód, dla którego. Podwójne cudzysłowy będą działać w przypadku zapytań bez rozszerzenia *.
NobbZ
2
@ Dr.jacky Jestem pewien, że tak naprawdę nie masz już takiej potrzeby, ale na przyszłość, jeśli twój użytkownik root nie ma hasła, nie podawaj opcji -p jako pustej, po prostu nie przekazuj jej wcale, tj.mysql.exe -u root -e "my query"
solidau
29
mysql -uroot -p -hslavedb.mydomain.com mydb_production -e "select * from users;"

Z wydruku zużycia:

-e, --execute=name
Wykonaj polecenie i zakończ. (Wyłącza --forcei plik historii)

John Kugelman
źródło
15

oto, jak możesz to zrobić za pomocą fajnej sztuczki z powłoką:

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

'<<<' instruuje powłokę, aby traktowała wszystko, co następuje po niej, jako stdin, podobnie do potokowania z echa.

użyj opcji -t, aby włączyć dane wyjściowe w formacie tabeli

ʞɔıu
źródło
13

Jeśli jest to zapytanie, które często uruchamiasz, możesz zapisać je w pliku. Następnie za każdym razem, gdy chcesz go uruchomić :

mysql < thefile

(oczywiście ze wszystkimi flagami logowania i bazy danych)

dnagirl
źródło
6
echo "select * from users;" | mysql -uroot -p -hslavedb.mydomain.com mydb_production
Paź
źródło