Как правильно форматировать вывод оболочки sqlite?

Если я перейду к mysql shell и наберите SELECT * FROM users, я получаю -

 +--------+----------------+---------------------------------+----------+-----------+--------------------+--------------------+
| USERID | NAME           | EMAILID                         | PASSWORD | USER_TYPE | CONTACT_ID_FKUSERS | COMPANY_ID_FKUSERS |
+--------+----------------+---------------------------------+----------+-----------+--------------------+--------------------+
|    137 | X              | [email protected]                        | #        | ADMIN     |                166 |                110 |
|    138 | Kshitiz        | [email protected]                 | asdf     | ADMIN     |                167 |                111 |
+--------+----------------+---------------------------------+----------+-----------+--------------------+--------------------+
 

Oracle sqlplus показывает -

 USERID     NAME  EMAILID    PASSWORD   USER_TYPE  CONTACT_ID_FKUSERS COMPANY_ID_FKUSERS
---------- ----- ---------- ---------- ---------- ------------------ ------------------
137        X     [email protected]   #          ADMIN                     166                110
137        X     [email protected]   #          ADMIN                     166                110
 

Sqlite shell показывает -

 137|X|[email protected]|#|ADMIN|166|110
138|Kshitiz|[email protected]|asdf|ADMIN|167|111
 
  1. Есть ли способ украсить вывод из sqlite shell?
  2. Есть ли альтернативная оболочка, которая лучше, чем дистрибутив по умолчанию? (Только клиенты CLI)
50 голосов | спросил Kshitiz Sharma 23 AMpTue, 23 Apr 2013 09:24:46 +040024Tuesday 2013, 09:24:46

4 ответа


71

Для вывода «человек читаемый» вы можете использовать режим column и включать заголовок заголовка. Это даст вам что-то похожее на вывод 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
 
ответил Mat 23 PMpTue, 23 Apr 2013 13:39:37 +040039Tuesday 2013, 13:39:37
6

Для тех, кто заинтересован в получении тех же результатов, за исключением запуска sqlite из командной строки. Я обнаружил, что следующее не работает:

 $ sqlite3 <dbfile> ".headers on;.mode column;select * from MyTable"
Error: mode should be one of: ascii column csv html insert line list tabs tcl
 

Вместо этого вы должны использовать опции -column и -header с командой sqlite следующим образом:

 $ sqlite3 -column -header <dbfile> "select * from MyTable"
 

Использование:

 $ sqlite3 --version 3.8.11.1 2015-07-29 20:00:57 cf538e2783e468bbc25e7cb2a9ee64d3e0e80b2f
 
ответил jersey bean 9 AM00000020000003031 2016, 02:49:30
1

Мина была похожа на беспорядочную паузу. @Boxuan комментировать

  

Вы также можете добавить .сепаратор ROW "\ n", чтобы строки были   разделенных разрывами строк. Мой не было, и выход был нечитабельным.   - Бокуан 11 мая в 15:08

Исправлена ​​также проблема с этим  введите описание изображения здесь>> </a> </p></body></html>

ответил superheron 12 72017vEurope/Moscow11bEurope/MoscowSun, 12 Nov 2017 20:32:21 +0300 2017, 20:32:21
0

Как я еще не могу комментировать ... В дополнение к большим ответам, уже предоставленным Mat и mlissner, если в любом случае содержимое столбца усекается после предоставления правильного формата оболочке sqlite (используя .mode column и .mode column, как указано выше), есть также возможность использовать .headers on, чтобы было показано полное содержимое столбца .

Единственным недостатком этой команды является то, что заголовки столбцов сокращаются, поэтому они не читают их правильно, а вывод может быть довольно беспорядочным (в визуальном сценарии), тогда вы можете использовать .explain для вернитесь к предыдущему формату и просмотрите его с более «читаемым человеком» форматом еще раз.

Этот подход может использоваться в сочетании с командами выходных форматов и в качестве временного решения для просмотра полных данных базы данных /столбца, как и при использовании .explain off, вы всегда должны давать точное количество символов, чтобы получить полный вывод данных столбца.

Для получения дополнительной информации об изменении форматов вывода, быстро ссылайтесь на документацию по умолчанию для CLI:

https://www.sqlite.org/cli.html

ответил Cho-Lung 20 +03002015-10-20T00:05:55+03:00312015bEurope/MoscowTue, 20 Oct 2015 00:05:55 +0300 2015, 00:05:55

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132