sqlite3 está cortando / cortando / truncando mis columnas de text

Tengo valores cortados y me gustaría mostrar los valores completos.

Sqlite3 -column -header locations.dbs " select n.namelist, f.state, t.state from names n left join locations l on l.id = n.id left join statenames f on f.st = l.st left join statenames t on t.st = l.stto where n.timing > 200601 and count(n.timing)<=15" 

Lo cual me da

 name From State To State ---------- ----------- ---------- Jack Connecticut Louisiana Jeff Danie New Hampshi New Hampsh 

Los nombres se truncan hasta 10 caracteres o la longitud de la primera fila de datos, el que sea más largo. ¿Cómo puedo evitar que esto suceda sin hacer que las columnas sean más grandes de lo que deben ser?

Gracias

No parece haber una manera de hacerlo automático, pero puede usar el command .width para especificar manualmente los anchos de columna.

Vea aquí (search en la página para .width ).

simplemente podría usar la columna (el command Unix) de esta manera:

 sqlite3 -list -separator "|" -header db.dbs "Select ...." | column -t -s "|" 

-list y -separator se pueden omitir, ya que son valores pnetworkingeterminados

Ampliando la respuesta por zuloo , es posible usar el prompt interactivo y tener anchos de columna automáticos también.

Además de la column , también necesitarás rlwrap ( sudo apt-get install rlwrap si estás en Ubuntu). Lo ejecuta así:

 rlwrap -a -N -c -z pipeto sqlite3 -header locations.dbs 

O puede poner un alias en su .bashrc o similar:

 alias sqlite="rlwrap -a -N -c -z pipeto sqlite3 -header" 

En la console sqlite, puede ejecutar su consulta de esta manera:

 select * from names; | column -n -t -s '|' 

O, para hacerlo más agradable, ponga un script en algún lugar de su $PATH :

 #!/bin/bash column -n -t -s '|' 

Digamos que se llama pp , no olvides hacerlo ejecutable con chmod u+x pp . Luego puede usar el post interactivo de esta manera:

 select * from names; | pp 

De hecho, estaba buscando soluciones para el mismo problema y encontré esta solución alternativa:

 sqliteresult=`sqlite3 -header -list $SQLITE_FILE "SELECT * ..." | tr "\\n" ";"` sqliteresult="${sqliteresult/;/;-----------------------------;}" sqliteresult="${sqliteresult//;/\n}" sqliteresult="${sqliteresult//|/\t|\t}" echo -e $sqliteresult 

Esperando que ayude 🙂

~ Stéphane

Aquí hay otra forma de formatear varias tablas y mostrar el rowid en un formatting agradable.

 #/usr/bin/env bash cli_opts="-header" for table in "table1" "table2"; do select="select rowid as ' ', * from $table;" #echo "$select" echo "$table" sqlite3 $cli_opts database.db "$select" | column -t -s "|" echo -e '\n' done