Come si esegue una singola query tramite mysql dalla riga di comando?


157

Sto cercando di essere in grado di eseguire una singola query su un server remoto in un'attività con script.

Ad esempio, intuitivamente, immagino che sarebbe simile a:

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

Risposte:


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

3
C: \ Programmi (x86) \ MySQL \ MySQL Server 5.7 \ bin> mysql.exe -u root -p -e "la mia query" ----> ERRORE 1045 (28000): accesso negato per l'utente 'root' @ 'localhost' (utilizzando la password: SÌ)
Dr.jacky,

2
Questo dovrebbe essere il primo risultato in una ricerca su Google (per "mysql exec sql dalla riga di comando") e non nell'enorme sito mysql!
Guillaume Bois,

4
Inoltre, se si desidera eliminare l'intestazione e il formato della tabella, è possibile utilizzaremysql -u <user> -p -B --disable-column-names -e 'select * from schema.table'
dvlcube l'

2
@tinybyte Supponendo Linux: Insinde raddoppia le virgolette l'asterisco *viene espanso in tutti i file nella directory corrente, mentre questa espansione non avviene in virgolette singole, ecco perché. Doublequotes funzionerà per domande senza *.
NobbZ,

2
@ Dr.jacky Sono sicuro che non hai più davvero bisogno, ma per il futuro, se il tuo utente root non ha password, non passare l'opzione -p come vuota, semplicemente non passarla affatto, cioèmysql.exe -u root -e "my query"
solidau

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

Dalla stampa di utilizzo:

-e, --execute=name
Esegui comando ed esci. (Disabilita --forcee file cronologico)


15

ecco come puoi farlo con un fantastico trucco da shell:

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

'<<<' indica alla shell di prendere tutto ciò che la segue come stdin, simile alla piping dell'eco.

usa il flag -t per abilitare l'output in formato tabella


13

Se si tratta di una query che si esegue spesso, è possibile memorizzarla in un file. Quindi ogni volta che vuoi eseguirlo :

mysql < thefile

(con tutti i flag di login e database ovviamente)


6
echo "select * from users;" | mysql -uroot -p -hslavedb.mydomain.com mydb_production
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.