如果我去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
- 有没有办法美化输出
sqlite shell
? - 是否有比默认发行版更好的替代外壳?(仅限 CLI 客户端)
对于“人类可读”输出,您可以使用
column
模式,并打开标题输出。这将为您提供类似于sqlplus
示例中的输出的内容:所有答案都提供了您可以在 SQLite 控制台或通过 CLI 键入的设置,但没有人提到可以将这些设置放入 RC 文件中以避免一直键入它们。另存为
~/.sqliterc
:注意我还为空值添加了一个占位符,而不是默认的空字符串。
对于那些对获得相同结果感兴趣的人,除了从命令行运行 sqlite。我发现以下不起作用:
相反,您必须将选项 -column 和 -header 与 sqlite 命令一起使用,如下所示:
使用:
我总是用
它垂直打印查询结果,类似于 MySQL 的
\G
修饰符。因为我还不能发表评论......除了 Mat 和 mlissner 已经提供的很好的答案之外,如果在任何情况下列的内容被截断,在给 sqlite shell 提供正确的格式之后(使用
.mode column
和.headers on
如上所述),也可以使用.explain
这样的方式显示一列的全部内容。此命令的唯一缺点是列标题缩小,因此无法正确读取它们并且输出可能非常混乱(在视觉场景中),然后您可以使用
.explain off
返回到以前的格式并以更“人性化”的方式查看它可读”格式再次。这种方法可以与输出格式化程序命令结合使用,并作为查看数据库/列的完整数据的临时解决方案,因为
.width
您始终必须给出精确的字符数才能获得完整的输出列的数据。有关更改输出格式的更多信息,请快速参考默认 CLI 文档:
https://www.sqlite.org/cli.html
您可以
.mode tabs
使用方便。我的看起来很乱,没有换行符。@博轩评论
也解决了我的问题
除了已经说过的所有内容之外,您还可以使用 .width 控制显示的列的宽度。
例子
然后您的输出将显示您的第一列宽度为 8 个字符,第二列自动调整(见下文),第三列宽度为 3 个字符,第四列宽度为 9 个字符。
替代 .width,使用一个用空格填充的别名。
优点是您在查询中只为那些需要额外宽度的列动态调整宽度,而其余列继续使用自动调整宽度。
所有列都将使用基于 sqlite 文档宽度规则的自动调整宽度:
假设您的表“my_table”具有“名称”、“年龄”和“地址”列。您有兴趣展示:
您的查询将是:
你的输出:
请注意,SQLite3 有很多
.mode
选项。让我们来看看:对于原来的问题我们一定要看
box
,table
当然column
。好吧,
column
需要一些帮助.headers on
来显示标题,而box
模式table
并不关心,它们总是显示标题。这两种模式在显示大长度数据时会破坏布局。而且,再次
box
和table
模式不关心.width
(这是一个遗憾)。当我们需要在 SQLite CLI 中处理大篇幅时,最好
.mode
使用line
. 这样每一列都将逐行显示,实例将用空行分隔。另外(但完全偏离主题),探索的好模式,特别是用于数据导出,是:
csv
,json
,insert
等等。因此,结帐
sqlite> .help .mode
并进行自己的尝试。更新:
我们还可以通过一个小技巧应用函数来限制列大小
substr()
:始终检查文档:https ://www.sqlite.org/cli.html#dot_command_execution
=)