Como você executa uma única consulta através do mysql na linha de comando?


157

Eu estou olhando para poder executar uma única consulta em um servidor remoto em uma tarefa com script.

Por exemplo, intuitivamente, eu imaginaria que seria algo como:

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

Respostas:


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

3
C: \ Arquivos de programas (x86) \ MySQL \ MySQL Server 5.7 \ bin> mysql.exe -u raiz -p -e "minha consulta" ----> ERRO 1045 (28000): acesso negado para o usuário 'root' @ 'localhost' (usando a senha: YES)
Dr.jacky

2
Este deve ser o primeiro resultado de uma pesquisa no google (por "mysql exec sql a partir da linha de comando") e não o enorme site mysql!
Guillaume Bois

4
Além disso, se você quiser tirar o formato de cabeçalho e tabela que você pode usarmysql -u <user> -p -B --disable-column-names -e 'select * from schema.table'
dvlcube

2
@tinybyte Supondo que o Linux: aspas duplas insinde o asterisco *seja expandido para todos os arquivos no diretório atual, embora essa expansão não ocorra entre aspas simples, esse é o motivo. As aspas duplas funcionarão para perguntas sem o *.
NóZZZ

2
@ Dr.jacky Tenho certeza que você realmente não precisa mais, mas para o futuro, se o usuário root não tiver senha, não passe a opção -p em branco, apenas não a passemysql.exe -u root -e "my query"
solidau

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

Na impressão de uso:

-e, --execute=name
Executar comando e sair. (Desativa --forcee arquivo de histórico)


15

Aqui está como você pode fazer isso com um truque legal:

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

'<<<' instrui o shell a considerar o que segue como stdin, semelhante à tubulação do eco.

use o sinalizador -t para ativar a saída no formato de tabela


13

Se for uma consulta que você executa com freqüência, você pode armazená-la em um arquivo. Então, sempre que você quiser executá-lo :

mysql < thefile

(com todos os sinalizadores de logon e banco de dados, é claro)


6
echo "select * from users;" | mysql -uroot -p -hslavedb.mydomain.com mydb_production
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.