20

これは、ターミナルで SQLite を操作する際の単なる見栄えのためですが、各ヘッダーが適切に (そして他の列とは独立して) サイズ変更されるように、列幅をヘッダーでフォーマットする方法はありますか? 言い換えれば、ここに出力があります

.width auto

シンプルなテーブルに

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 

それは私が期待することをします。各列のサイズを変更して、任意の 1 つの列で最も長いアイテムを表示できるようにします。ただし、各列がその列のみの最長の項目に十分な幅になるように、出力を自動的にフォーマットしたいと思います。つまり、入力する必要はありません

.width 2 10 5

この出力を取得するための事後

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

列のサイズ変更を正しく自動化するためにできることはありますか?

4

8 に答える 8

5

「人間が読める」出力の場合、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
于 2016-10-10T05:05:30.297 に答える
3

rlwrapとで自動的に行うことができますcolumn

$ rlwrap -a -N -c -z pipeto sqlite3 -header foo.db
> select * from cars; | column -n -t -s '|'

詳細については、sqlite3 に対する私の回答がテキスト列を切り刻む/切り取る/切り詰めるを参照してください。

于 2015-11-11T16:09:08.557 に答える