Si voy mysql shell
y escribo SELECT * FROM users
me sale -
+--------+----------------+---------------------------------+----------+-----------+--------------------+--------------------+
| USERID | NAME | EMAILID | PASSWORD | USER_TYPE | CONTACT_ID_FKUSERS | COMPANY_ID_FKUSERS |
+--------+----------------+---------------------------------+----------+-----------+--------------------+--------------------+
| 137 | X | b@cc.com | # | ADMIN | 166 | 110 |
| 138 | Kshitiz | ksharma@aaa.com | asdf | ADMIN | 167 | 111 |
+--------+----------------+---------------------------------+----------+-----------+--------------------+--------------------+
Oracle sqlplus
muestra -
USERID NAME EMAILID PASSWORD USER_TYPE CONTACT_ID_FKUSERS COMPANY_ID_FKUSERS
---------- ----- ---------- ---------- ---------- ------------------ ------------------
137 X b@cc.com # ADMIN 166 110
137 X b@cc.com # ADMIN 166 110
Sqlite shell
muestra -
137|X|b@cc.com|#|ADMIN|166|110
138|Kshitiz|ksharma@aaa.com|asdf|ADMIN|167|111
- ¿Hay alguna manera de embellecer la salida de
sqlite shell
? - ¿Existe un shell alternativo que sea mejor que la distribución predeterminada? (Solo clientes CLI)
Respuestas:
Para la salida "legible para humanos", puede usar el
column
modo y activar la salida del encabezado. Eso te dará algo similar a lasqlplus
salida en tus ejemplos:fuente
echo -e '.mode column\n.headers on\nselect * from sip_foo;\n' | sqlite3 database.sqlite | less -S
para obtener una fila por línea sin ajuste de texto..width
comando para ampliar las columnas. De lo contrario, su contenido se truncará visualmente..separator ROW "\n"
, para que las filas estén separadas por saltos de línea. El mío no era, y la salida era ilegible.~/.sqliterc
archivo si no desea hacerlo manualmente cada vez.Para aquellos que estén interesados en obtener los mismos resultados, excepto ejecutar sqlite desde la línea de comandos. Descubrí que lo siguiente no funciona:
En su lugar, debe usar las opciones -column y -header con el comando sqlite de la siguiente manera:
Utilizando:
fuente
echo -e ".headers on \n.mode column \n.width 10 20 500 \n select * from MyTable" | sqlite3 <dbfile>
- es decir, enviar los comandos al stdin.".headers on\n.mode column\n
etc..mode csv
o-csv
desde CLITodas las respuestas proporcionan configuraciones que puede escribir en la consola de SQLite o mediante CLI, pero nadie menciona que estas configuraciones se pueden colocar en un archivo RC para evitar tener que escribirlas todo el tiempo. Guarda esto como
~/.sqliterc
:Tenga en cuenta que también he agregado un marcador de posición para valores nulos, en lugar de la cadena vacía predeterminada.
fuente
Yo siempre uso
que imprime los resultados de la consulta verticalmente, similar al
\G
modificador de MySQL .fuente
Como aún no puedo comentar ... Además de las excelentes respuestas ya proporcionadas por Mat y mlissner, si en cualquier caso el contenido de una columna se trunca, después de dar el formato correcto al shell sqlite (usando
.mode column
y.headers on
como se indicó anteriormente) ), también existe la posibilidad de usar.explain
para que se muestre el contenido completo de una columna.El único inconveniente de este comando es que los encabezados de las columnas se reducen, por lo que no los lee correctamente y la salida puede ser bastante desordenada (en un escenario visual), luego puede usar
.explain off
para volver al formato anterior y verlo con un "más humano". formato legible "una vez más.Este enfoque se puede usar junto con los comandos de formateadores de salida, y como una solución temporal para ver los datos completos de una base de datos / columna, ya que con el uso de
.width
usted siempre debe proporcionar el número preciso de caracteres para obtener la salida completa de Los datos de una columna.Para obtener más información sobre cómo cambiar los formatos de salida, una referencia rápida a la documentación de CLI predeterminada:
https://www.sqlite.org/cli.html
fuente
El mío parecía un desastre sin saltos de línea. @Boxuan comenta sobre
También solucioné mi problema con él
fuente
Se puede usar
.mode tabs
por conveniencia.fuente