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.