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;"
Mateus
fonte

Respostas:

249
mysql -u <user> -p -e "select * from schema.table"
RC.
fonte
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)

John Kugelman
fonte
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

ʞɔıu
fonte
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)

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