Estou usando o PuTTY para executar:
mysql> SELECT * FROM sometable;
sometable
possui muitos campos e isso resulta em muitas colunas tentando serem exibidas no terminal. Os campos passam para a próxima linha, portanto, é muito difícil alinhar os títulos das colunas com os valores dos campos.
Quais soluções existem para visualizar esses dados no terminal?
Não tenho nem quero acessar o phpMyAdmin - ou qualquer outra interface GUI. Estou procurando soluções de linha de comando como esta: Salvar resultados da consulta MySQL em texto ou arquivo CVS
mysql
command-line
select
putty
Chris Jacob
fonte
fonte
Respostas:
Encerre a consulta com
\G
no lugar de;
. Por exemplo:Esta consulta exibe as linhas verticalmente, assim:
fonte
G
deve ser capitalizado.SELECT * FROM sometable\G
você está enviando a string para o cliente de linha de comando mysql, não o Windows, que é por isso que oG
diferencia maiúsculas de minúsculassh: 1: less: not found 44 rows in set (0.01 sec)
Você também pode achar isso útil (apenas não Windows):
Isso conduzirá a saída através da
less
ferramenta de linha de comando que, com esses parâmetros, fornecerá uma saída tabular que pode ser rolada horizontal e verticalmente com as teclas do cursor.Deixe essa visualização pressionando a
q
tecla que fechará aless
ferramenta.fonte
/
e, em seguida, escreva a sequência de pesquisa, que também pode ser uma expressão regular, e pressione enter. Pesquise para frente pressionandon
e para trás pressionandoN
(Shift + n
).less
pode fazer coisas ainda mais legais. Usando&
você pode filtrar (apenas mostrar linhas correspondentes) o resultado usando expressões regulares. Isso funciona além da/
pesquisa (que ainda causará o destaque). Redefina o filtro pressionando&
novamente e pressionando Return.Tente ativar o modo vertical, usando
\G
para executar a consulta em vez de;
:Seus resultados serão listados no modo vertical; portanto, cada valor da coluna será impresso em uma linha separada. A saída será mais estreita, mas obviamente muito mais longa.
fonte
\G
, você também pode usar\g
como substituto;
, eu sei, quem faria isso, mas isso contextualiza o porquê do\G
trabalho em primeiro lugar.Usando
mysql
oego
comandoA partir
mysql
dohelp
comando:Então, anexando a
\G
ao seuselect
, você pode obter uma saída vertical muito limpa:Usando um pager
Você pode dizer ao MySQL para usar o
less
pager com sua-S
opção que corta linhas largas e fornece uma saída que você pode rolar com as teclas de seta:Assim, da próxima vez que você executar um comando com uma saída ampla, o MySQL permitirá navegar na saída com o
less
pager:Se você terminou o pager e deseja voltar à saída normal
stdout
, use o seguinte:fonte
Você pode usar a opção
--table
ou-t
, que produzirá um bom conjunto de resultadosou algum outro método para passar uma consulta ao mysql, como:
resultado:
fonte
O pager padrão é stdout. O stdout tem a limitação da coluna, portanto a saída seria quebrada. Você pode definir outras ferramentas como pager para formatar a saída. Existem dois métodos. Uma é limitar a coluna, a outra é processá-la no vim.
O primeiro método:
A saída não está completa. O conteúdo se encaixa na sua tela.
O segundo:
Defina o modo vim como nowrap no seu .vimrc
fonte
pager cut -c -200
. As respostas mais aceitas aqui exigiram que eu baixasse dependências desnecessárias.Apenas para complementar a resposta que achei melhor, também uso de
less -SFX
uma maneira diferente: gosto de publicá-lo no meu.my.cnf
arquivo na minha pasta pessoal, um exemplo de arquivo cnf é assim:O bom de tê-lo dessa maneira é que isso
less
é usado apenas quando a saída de uma consulta tem mais de uma página, aqui está a explicação de todos os sinalizadores:Nota: no
.my.cnf
arquivo não coloque opager
comando abaixo da[client]
palavra - chave; embora possa funcionarmysql
bem,mysqldump
vai reclamar por não reconhecê-lo.fonte
less
permanecerá ancorado na primeira linha da saída.Se você estiver usando o MySQL interativamente, poderá configurar seu pager para usar da
sed
seguinte maneira:Se você não usar
sed
como pager, a saída será a seguinte:fonte
Eu escrevi
pspg
- https://github.com/okbob/pspgEste pager foi projetado para dados tabulares - e o MySQL também é suportado.
fonte
Acredito que a massa tenha um número máximo de colunas que você pode especificar para a janela.
Para o Windows, eu pessoalmente uso o Windows PowerShell e defino a largura do buffer da tela razoavelmente alta. A largura da coluna permanece fixa e você pode usar uma barra de rolagem horizontal para ver os dados. Eu tive o mesmo problema que você está tendo agora.
editar: para hosts remotos nos quais você precisa fazer o SSH, você usaria algo como plink + Windows PowerShell
fonte
Você pode usar
tee
para gravar o resultado da sua consulta em um arquivo:fonte
Usando o prompt de comando do Windows, você pode aumentar o tamanho do buffer da janela o quanto desejar para ver o número de colunas. Isso depende do número de colunas na tabela.
fonte