Если я иду mysql shell
и печатать, SELECT * FROM users
я получаю -
+--------+----------------+---------------------------------+----------+-----------+--------------------+--------------------+
| 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
показывает -
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
показывает -
137|X|b@cc.com|#|ADMIN|166|110
138|Kshitiz|ksharma@aaa.com|asdf|ADMIN|167|111
- Есть ли способ украсить выход из
sqlite shell
? - Есть ли альтернативная оболочка, которая лучше дистрибутива по умолчанию? (Только клиенты CLI)
Ответы:
Для «удобочитаемого» вывода вы можете использовать
column
режим и включить вывод заголовка. Это даст вам нечто похожее наsqlplus
вывод в ваших примерах:источник
echo -e '.mode column\n.headers on\nselect * from sip_foo;\n' | sqlite3 database.sqlite | less -S
чтобы получить по одной строке на строку без переноса слов..width
команду, чтобы сделать столбцы шире. В противном случае ваш контент будет обрезан визуально..separator ROW "\n"
, чтобы строки разделялись переносами строк. Моего не было, а вывод был нечитабелен.~/.sqliterc
файл, если вы не хотите делать это каждый раз вручную.Все ответы содержат параметры, которые вы можете ввести на консоли SQLite или через CLI, но никто не упоминает, что эти параметры можно поместить в файл RC, чтобы избежать необходимости их постоянного ввода. Сохранить это как
~/.sqliterc
:Примечание. Я также добавил заполнитель для нулевых значений вместо пустой строки по умолчанию.
источник
Для тех, кто заинтересован в получении тех же результатов, кроме запуска sqlite из командной строки. Я обнаружил, что следующее не работает:
Вместо этого вы должны использовать опции -column и -header с командой sqlite следующим образом:
С помощью:
источник
echo -e ".headers on \n.mode column \n.width 10 20 500 \n select * from MyTable" | sqlite3 <dbfile>
- то есть отправка команд в стандартный ввод.".headers on\n.mode column\n
etc.mode csv
или-csv
из CLIЯ всегда использую
который печатает результаты запроса вертикально, аналогично
\G
модификатору MySQL .источник
Пока я не могу комментировать ... В дополнение к отличным ответам, уже предоставленным Mat и mlissner, если в любом случае содержимое столбца усекается, после предоставления правильного формата оболочке sqlite (используя
.mode column
и.headers on
как указано выше) ), также есть возможность использовать,.explain
чтобы отображалось полное содержимое столбца.Единственным недостатком этой команды является то, что заголовки столбцов сжимаются, поэтому они не читаются должным образом, а выходные данные могут быть довольно грязными (в визуальном сценарии), тогда вы можете использовать,
.explain off
чтобы вернуться к предыдущему формату и просмотреть его с более «человеческим» читаемый "формат еще раз.Этот подход можно использовать в сочетании с командами форматирования вывода и в качестве временного решения для просмотра полных данных базы данных / столбца, так как при использовании
.width
вы всегда должны указывать точное количество символов, чтобы получить полный вывод данные столбца.Для получения дополнительной информации об изменении форматов вывода, краткий справочник по документации CLI по умолчанию:
https://www.sqlite.org/cli.html
источник
Мой выглядел как перепутанный без разрывов строк. @Boxuan комментировать
Исправлена и моя проблема с этим
источник
Вы можете использовать
.mode tabs
для удобства.источник