Na comunidade do servidor MySQL 8 para exportar a saída de uma consulta SQL é possível executar o MySQL Shell
seguinte comando (o mais básico):
SELECT * FROM cientifico INTO OUTFILE '/var/lib/mysql-files/cientifico-data.txt';
E funciona como esperado
Mas para uma consulta não SQL como a seguir:
SHOW PROCESSLIST INTO OUTFILE '/var/lib/mysql-files/processlist.txt';
Lança o seguinte erro
ERRO 1064 (42000): Há um erro na sintaxe SQL; verifique o manual correspondente à versão do seu servidor MySQL para obter a sintaxe correta a ser usada perto de 'INTO OUTFILE '/var/lib/mysql-files/processlist.txt'' na linha 1
O mesmo que:
SHOW DATABASES INTO OUTFILE '/var/lib/mysql-files/databases.txt';
Dando
ERRO 1064 (42000): Há um erro na sintaxe SQL; verifique o manual correspondente à versão do seu servidor MySQL para obter a sintaxe correta a ser usada perto de 'INTO OUTFILE '/var/lib/mysql-files/databases.txt'' na linha 1
Portanto se for possível
Pergunta
- Como exportar a saída de uma frase de consulta não SQL?
Estou assumindo que a INTO OUTFILE
sintaxe é apenas para sentenças SQL, mas e para sentenças não SQL?
SHOW
não pode ser combinado com aINTO OUTFILE
sintaxe. Use aINTO OUTFILE
cláusula somente comSELECT
.Você pode consultar
PERFORMANCE_SCHEMA.PROCESSLIST
usandoSELECT
, e isso lhe dá a oportunidade de capturar a saída.Ou você pode desenvolver seu próprio código cliente na sua linguagem favorita, que busca o resultado de um
SHOW
comando e, em seguida, salva os resultados em um arquivo. Se precisar de um tratamento especial para o formato, por exemplo, tabulações em vez de vírgulas, você mesmo terá que escrever o código para isso. Mas escrever linhas de texto em um arquivo em um loop não é uma tarefa de programação difícil.A maneira mais fácil de colocar qualquer
mysql
saída no arquivo é usarmysql
em modo de lote:Se você quiser analisar a saída, é útil suprimir alguns aprimoramentos visuais: