log*_*son 14 sql sqlite terminal formatting
在终端中使用SQLite时,这只是一个纯粹的眼睛糖果,但有没有办法用标题格式化列宽,以便每个标题适当调整大小(并独立于其他列)?换句话说,这是输出
.width auto
Run Code Online (Sandbox Code Playgroud)
一张简单的桌子
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
Run Code Online (Sandbox Code Playgroud)
它做了我所期望的.它调整每列的大小,以便显示任何一列中最长的项目.但是,我想自动对输出进行格式化,使得每列足够宽,仅用于其列中的最长项.换句话说,我不想输入
.width 2 10 5
Run Code Online (Sandbox Code Playgroud)
事后得到这个输出
Id Name Price
-- ---------- -----
1 Audi 52642
2 Mercedes 57127
3 Skoda 9000
4 Volvo 29000
5 Bentley 35000
6 Citroen 21000
7 Hummer 41400
8 Volkswagen 21600
Run Code Online (Sandbox Code Playgroud)
我能做些什么来正确自动化列大小调整吗?
小智 7
对于"人类可读"输出,您可以使用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
Run Code Online (Sandbox Code Playgroud)
该sqlite3
工具没有这样的功能。
您必须手动计算列宽 ( SELECT max(length(col1)) ...
)。
除了 .width 之外,还可以使用用空格填充的别名。
优点是您只在查询中动态调整那些需要额外宽度的列的宽度,而其余列则继续使用自动调整宽度。
所有列都将使用自动调整宽度,该宽度基于 sqlite 文档宽度规则:
如果指定列宽为 0,则列宽将自动调整为三个数字中的最大值:10、标题宽度和第一行数据的宽度。这使得列宽能够自动调整。每列的默认宽度设置就是这个自动调整的 0 值。
假设您的表“my_table”具有“姓名”、“年龄”和“地址”列。您有兴趣展示:
您的查询将是:
.mode columns
.headers on
CREATE TABLE my_table (name TEXT, age INTEGER, address TEXT);
INSERT INTO my_table VALUES ("short name",
22, "my house");
INSERT INTO my_table VALUES ("my name is very long",
22, "i live in my house somewhere in the planet Earth");
SELECT name AS "name ",
age,
address AS "address "
FROM my_table;
Run Code Online (Sandbox Code Playgroud)
你的输出:
name age address
-------------------- ---------- ------------------------------
short name 22 my house
my name is very long 22 i live in my house somewhere i
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
10121 次 |
最近记录: |