¿Cómo ejecuta una sola consulta a través de mysql desde la línea de comandos?


157

Estoy buscando poder ejecutar una sola consulta en un servidor remoto en una tarea programada.

Por ejemplo, intuitivamente, me imagino que sería algo así como:

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

Respuestas:


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

3
C: \ Archivos de programa (x86) \ MySQL \ MySQL Server 5.7 \ bin> mysql.exe -u root -p -e "my query" ----> ERROR 1045 (28000): Acceso denegado para el usuario 'root' @ 'localhost' (usando la contraseña: SI)
Dr.jacky

2
¡Este debería ser el primer resultado en una búsqueda en Google (para "mysql exec sql desde la línea de comandos") y no el enorme sitio mysql!
Guillaume Bois

44
Además, si desea eliminar el formato de encabezado y tabla, puede usarlomysql -u <user> -p -B --disable-column-names -e 'select * from schema.table'
dvlcube

2
@tinybyte Suponiendo que Linux: con comillas dobles, el asterisco *se expande a todos los archivos en el directorio actual, mientras que esta expansión no ocurre en comillas simples, esa es la razón. Doublequotes funcionará para consultas sin el *.
NobbZ

2
@ Dr.jacky Estoy seguro de que ya no tiene la necesidad, pero para el futuro, si su usuario root no tiene contraseña, no pase la opción -p como en blanco, simplemente no la pase, es decirmysql.exe -u root -e "my query"
solidau

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

De la impresión de uso:

-e, --execute=name
Ejecute el comando y salga. (Desactiva --forcey archivo de historial)


15

Así es como puedes hacerlo con un truco genial:

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

'<<<' le indica al shell que tome lo que sigue como stdin, similar a una tubería desde el eco.

use el indicador -t para habilitar la salida en formato de tabla


13

Si es una consulta que ejecuta con frecuencia, puede almacenarla en un archivo. Entonces, cada vez que quieras ejecutarlo :

mysql < thefile

(con todos los indicadores de inicio de sesión y base de datos, por supuesto)


6
echo "select * from users;" | mysql -uroot -p -hslavedb.mydomain.com mydb_production
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.