Se eu for mysql shell
e digitar SELECT * FROM users
, recebo -
+--------+----------------+---------------------------------+----------+-----------+--------------------+--------------------+
| USERID | NAME | EMAILID | PASSWORD | USER_TYPE | CONTACT_ID_FKUSERS | COMPANY_ID_FKUSERS |
+--------+----------------+---------------------------------+----------+-----------+--------------------+--------------------+
| 137 | X | [email protected] | # | ADMIN | 166 | 110 |
| 138 | Kshitiz | [email protected] | asdf | ADMIN | 167 | 111 |
+--------+----------------+---------------------------------+----------+-----------+--------------------+--------------------+
Oracle sqlplus
mostra -
USERID NAME EMAILID PASSWORD USER_TYPE CONTACT_ID_FKUSERS COMPANY_ID_FKUSERS
---------- ----- ---------- ---------- ---------- ------------------ ------------------
137 X [email protected] # ADMIN 166 110
137 X [email protected] # ADMIN 166 110
Sqlite shell
mostra -
137|X|[email protected]|#|ADMIN|166|110
138|Kshitiz|[email protected]|asdf|ADMIN|167|111
- Existe uma maneira de embelezar a saída de
sqlite shell
? - Existe um shell alternativo que seja melhor que a distribuição padrão? (somente clientes CLI)
Para saída "legível por humanos", você pode usar o
column
modo e ativar a saída do cabeçalho. Isso lhe dará algo semelhante àsqlplus
saída em seus exemplos:Todas as respostas fornecem configurações que você pode digitar no console SQLite ou via CLI, mas ninguém menciona que essas configurações podem ser colocadas em um arquivo RC para evitar ter que digitá-las o tempo todo. Salve isso como
~/.sqliterc
:Observe que também adicionei um espaço reservado para valores nulos, em vez da string vazia padrão.
Para aqueles que estão interessados em obter os mesmos resultados, exceto executar o sqlite na linha de comando. Descobri que o seguinte não funciona:
Em vez disso, você deve usar as opções -column e -header com o comando sqlite da seguinte forma:
Usando:
eu sempre uso
que imprime os resultados da consulta verticalmente, semelhante ao
\G
modificador do MySQL.Como ainda não posso comentar... Além das ótimas respostas já fornecidas por Mat e mlissner, se em algum caso o conteúdo de uma coluna estiver truncado, após dar o formato correto ao shell sqlite (usando
.mode column
e.headers on
como dito acima ), há também a possibilidade de usar.explain
para que seja mostrado todo o conteúdo de uma coluna.A única desvantagem desse comando é que os cabeçalhos das colunas encolhem, não sendo lidos corretamente e a saída pode ficar bastante confusa (em um cenário visual), então você pode usar
.explain off
para retornar ao formato anterior e visualizá-lo com um formato mais "humano legível" formato mais uma vez.Essa abordagem pode ser usada em conjunto com comandos de formatadores de saída e como uma solução temporária para visualizar dados completos de um banco de dados/coluna, pois com o uso de
.width
você sempre precisa fornecer o número preciso de caracteres para obter a saída completa de os dados de uma coluna.Para obter mais informações sobre como alterar os formatos de saída, uma referência rápida à documentação padrão da CLI:
https://www.sqlite.org/cli.html
Você pode usar
.mode tabs
por conveniência.O meu parecia uma bagunça sem quebras de linha. @Boxuan comentar sobre
Corrigido meu problema com ele também
Além de tudo o que já foi dito, você pode controlar a largura de suas colunas mostradas usando .width.
Exemplo
Em seguida, sua saída mostrará sua primeira coluna com uma largura de 8 caracteres, segunda coluna com ajuste automático (veja abaixo), terceira coluna com largura de 3 caracteres e a quarta terá uma largura de 9 caracteres.
Alternativa para .width, use um nome de alias preenchido com espaços.
A vantagem é que você está ajustando a largura rapidamente em sua consulta apenas para as colunas que exigem largura extra, enquanto o restante das colunas continua usando a largura de ajuste automático.
Todas as colunas usarão a largura de ajuste automático, que é baseada na regra de largura da documentação do sqlite:
Digamos que sua tabela "minha_tabela" tenha as colunas "nome", "idade" e "endereço". E você está interessado em mostrar:
Sua consulta será:
Sua saída:
Observe que o SQLite3 tem várias
.mode
opções. Vamos dar uma olhada:Para a pergunta original devemos olhar
box
,table
e clarocolumn
.Bem,
column
precisa de alguma ajuda.headers on
para mostrar os cabeçalhos, enquanto os modosbox
etable
não se importam, eles sempre mostram os cabeçalhos.Esses dois modos quebrarão o layout ao exibir dados com grandes comprimentos. E, novamente,
box
etable
modos não se importam.width
(o que é uma pena).Quando precisamos lidar com grandes comprimentos no SQLite CLI, uma boa
.mode
éline
. Dessa forma, cada coluna será exibida linha por linha e as instâncias serão separadas por uma linha em branco.Além disso (mas totalmente fora do tópico principal), bons modos para explorar, especialmente para exportação de dados, são:
csv
,json
einsert
assim por diante.Então, confira
sqlite> .help .mode
e faça suas próprias tentativas.ATUALIZAR:
Também podemos limitar os tamanhos das colunas com um pequeno truque aplicando function
substr()
:Sempre verifique os documentos: https://www.sqlite.org/cli.html#dot_command_execution
=)