我最近开始学习 SQLite,我正在尝试将表的数据输出到终端 (macOS)。但是,当某些列没有数据(例如在第二个条目中)时,我设置.mode column
或未.mode tab
正确对齐后的结果。
例如,在 Donna 没有年龄和地点数据的列模式中:
name surname age place
-------------- ------------------ ---------- ------------------
John Smith 34 assistant manager
Donna Patterson
Run Code Online (Sandbox Code Playgroud)
并在选项卡模式下:
name surname age place
John Smithonian 34 assistant manager
Donna Patterson
Run Code Online (Sandbox Code Playgroud)
但理想的结果是:
name surname age place
-------------- ------------------ ---------- ------------------
John Smith 34 assistant manager
Donna Patterson
Run Code Online (Sandbox Code Playgroud)
有什么我不知道的吗?我学习的书中的所有示例都描述了正确对齐的所有列。
标签模式也会发生同样的事情。
我正在使用预装 3.8 版 SQLite 的 Mac 上的 Terminal.app 工作
在后来的测试中,我发现如果我的列都填充了信息,那么所有数据是否对齐都是可能的。这取决于信息。当我Phone Number
在其中一个示例中添加一列时,漂亮的安排丢失了。
由于.mode tab
TAB 字符的性质,不能保证与输出对齐。另一方面.mode column
应该工作正常。
由于看起来 NULL 值的空字段会产生问题,因此您可以使用 更改 NULL 值的显示方式.nullvalue SOMESTRING
。我个人喜欢.nullvalue [NULL]
。
总结一下:
sqlite> .mode column
sqlite> .headers on
sqlite> .nullvalue [NULL]
sqlite> SELECT * FROM people;
name surname age place
-------------- ------------------ ---------- ------------------
John Smith 34 assistant manager
Donna Patterson [NULL] [NULL]
Run Code Online (Sandbox Code Playgroud)
还要确保检查.width
设置每列字符数的选项(负值右对齐,0 重置)以防万一。