Ответ 1
Кажется, что нет возможности сделать это автоматически, но вы можете использовать команду .width
для ручного указания ширины столбцов.
Смотрите здесь (найдите на странице .width
).
У меня есть значения, которые обрезаются и хотели бы отображать полные значения.
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"
Что дает мне
name From State To State
---------- ----------- ----------
Jack Connecticut Louisiana
Jeff Danie New Hampshi New Hampsh
Имена усекаются до 10 символов или длина первой строки данных, в зависимости от того, что больше. Как я могу остановить это, не делая столбцы больше, чем они должны быть?
Спасибо
Кажется, что нет возможности сделать это автоматически, но вы можете использовать команду .width
для ручного указания ширины столбцов.
Смотрите здесь (найдите на странице .width
).
вы могли бы просто использовать столбец (команда unix) следующим образом:
sqlite3 -list -separator "|" -header db.dbs "Select ...." | column -t -s "|"
-list
и -separator
могут быть опущены, поскольку они по умолчанию
Развернув ответ zuloo, можно использовать интерактивное приглашение и также иметь автоматическую ширину столбцов.
Помимо column
вам также понадобится rlwrap (sudo apt-get install rlwrap
, если вы на Ubuntu). Вы запускаете его следующим образом:
rlwrap -a -N -c -z pipeto sqlite3 -header locations.dbs
Или вы можете поместить псевдоним в свой .bashrc
или похожий:
alias sqlite="rlwrap -a -N -c -z pipeto sqlite3 -header"
В консоли sqlite вы можете выполнить свой запрос следующим образом:
select * from names; | column -n -t -s '|'
Или, чтобы сделать это лучше, поместите script где-нибудь в $PATH
:
#!/bin/bash
column -n -t -s '|'
Скажем, он называется pp
, не забудьте сделать его исполняемым с помощью chmod u+x pp
. Затем вы можете использовать интерактивное приглашение следующим образом:
select * from names; | pp
Я действительно искал решения для той же самой проблемы, и я нашел это обходное решение:
sqliteresult=`sqlite3 -header -list $SQLITE_FILE "SELECT * ..." | tr "\\n" ";"`
sqliteresult="${sqliteresult/;/;-----------------------------;}"
sqliteresult="${sqliteresult//;/\n}"
sqliteresult="${sqliteresult//|/\t|\t}"
echo -e $sqliteresult
Надеясь, что это помогает:)
~ Stéphane
Вот еще один способ отформатировать несколько таблиц и показать rowid в хорошем формате.
#/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