Wie führt man eine einzelne Abfrage über MySQL über die Befehlszeile aus?

156

Ich möchte in der Lage sein, eine einzelne Abfrage auf einem Remote-Server in einer Skriptaufgabe auszuführen.

Zum Beispiel würde ich mir intuitiv vorstellen, dass es ungefähr so ​​aussehen würde:

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

Antworten:

248
mysql -u <user> -p -e "select * from schema.table"
RC.
quelle
3
C: \ Programme (x86) \ MySQL \ MySQL Server 5.7 \ bin> mysql.exe -u root -p -e "meine Abfrage" ----> FEHLER 1045 (28000): Zugriff für Benutzer 'root' @ verweigert 'localhost' (mit Passwort: JA)
Dr.jacky
2
Dies sollte das erste Ergebnis einer Google-Suche sein (nach "mysql exec sql from command line") und nicht die riesige mysql-Site!
Guillaume Bois
4
Wenn Sie das Header- und Tabellenformat mysql -u <user> -p -B --disable-column-names -e 'select * from schema.table'
entfernen
2
@tinybyte Angenommen, Linux: Insinde-Doppelzitate Das Sternchen *wird auf alle Dateien im aktuellen Verzeichnis erweitert, während diese Erweiterung nicht in Einzelzitaten erfolgt. Dies ist der Grund dafür. Doppelzitate funktionieren für Fragen ohne das *.
NobbZ
2
@ Dr.jacky Ich bin mir sicher, dass Sie das nicht mehr wirklich brauchen, aber für die Zukunft, wenn Ihr Root-Benutzer kein Passwort hat, übergeben Sie die Option -p nicht als leer, sondern übergeben Sie sie überhaupt nicht, dhmysql.exe -u root -e "my query"
solidau
29
mysql -uroot -p -hslavedb.mydomain.com mydb_production -e "select * from users;"

Aus dem Nutzungsausdruck:

-e, --execute=name
Befehl ausführen und beenden. (Deaktiviert --forceund Verlaufsdatei)

John Kugelman
quelle
15

So geht's mit einem coolen Shell-Trick:

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

'<<<' weist die Shell an, alles, was darauf folgt, als stdin zu betrachten, ähnlich wie beim Ableiten von Echo.

Verwenden Sie das Flag -t, um die Ausgabe im Tabellenformat zu aktivieren

ʞɔıu
quelle
13

Wenn es sich um eine Abfrage handelt, die Sie häufig ausführen, können Sie sie in einer Datei speichern. Dann können Sie es jederzeit ausführen :

mysql < thefile

(natürlich mit allen Login- und Datenbankflags)

dnagirl
quelle
6
echo "select * from users;" | mysql -uroot -p -hslavedb.mydomain.com mydb_production
Okt.
quelle