Sqlite3 Для Форматирования Вывода.ширина

Это просто для глаз конфеты во время работы с SQLite в терминале, но есть ли способ форматировать ширину столбца с заголовками, чтобы каждый заголовок изменялся соответствующим образом (и независимо от других столбцов)? Другими словами, вот результат с

.width auto

для простой таблицы

Id          Name        Price     
----------  ----------  ----------
1           Audi        52642     
2           Mercedes    57127     
3           Skoda       9000      
4           Volvo       29000     
5           Bentley     350000    
6           Citroen     21000     
7           Hummer      41400     
8           Volkswagen  21600 

Он делает то, что я ожидал. Он изменяет размер каждого столбца, чтобы можно было отобразить самый длинный элемент в любом столбце. Тем не менее, я хотел бы автоматически иметь вывод отформатирован так, что каждый столбец достаточно широк для самого длинного элемента в только

5 ответов


на sqlite3 инструмент не имеет такой функции.

вам придется вычислить ширину столбца вручную (SELECT max(length(col1)) ...).


для вывода" человек читаемый", вы можете использовать column режим и включить header выход на. Это даст вам что-то похожее на sqlplus выход в ваших примерах:

sqlite> select * from foo;
234|kshitiz|dba.se

sqlite> .mode column
sqlite> select * from foo;
234         kshitiz     dba.se

sqlite> .headers on
sqlite> select * from foo;
bar         baz         baf
----------  ----------  ----------
234         kshitiz     dba.se

вы можете использовать простой скрипт awk, например:

sqlite3 -batch -list db "select ..." awk -F'|' '{printf "%3s %4s %s\n", , , }'

очень удобно. Также намного проще и гибче, чем режим столбца sqlite.


вы можете сделать это автоматически с rlwrap и column:

$ rlwrap -a -N -c -z pipeto sqlite3 -header foo.db
> select * from cars; | column -n -t -s '|'

для получения более подробной информации см. Мой ответ на sqlite3 рубит / режет / усекает мои текстовые столбцы.


из документации SQLite:

Если вы задаете столбец шириной 0, то ширина столбца автоматически настраивается как максимум из трех чисел: 10, ширина заголовка и ширина первой строки данных. Это делает ширину столбца саморегулирующейся. Значение ширины по умолчанию для каждого столбца-это значение автоматической регулировки 0.