概要
SQLite 3 のコマンドラインツールはデフォルトの設定だと
selectした結果を「|」(パイプ)と改行でつないで表示する。
この出力フォーマットは「.mode」コマンドで変更できる。
デフォルトは「list」
「.headers」のON/OFFに関わらずヘッダーが出力されるモードがある。
.mode の出力フォーマット
.mode コマンドのヘルプ
環境
- Windows 10
- sqlite3 (3.35.3) Command-Line Shell
出力に関する部分だけ抜粋
.mode MODE ?TABLE? Set output mode
MODE is one of:
ascii Columns/rows delimited by 0x1F and 0x1E
box Tables using unicode box-drawing characters
csv Comma-separated values
column Output in columns. (See .width)
html HTML <table> code
insert SQL insert statements for TABLE
json Results in a JSON array
line One value per line
list Values delimited by "|"
markdown Markdown table format
quote Escape answers as for SQL
table ASCII-art table
tabs Tab-separated values
tcl TCL list elements
.mode ascii
アスキーコードで定義されたデータ区切りで表示する。
0x1F(US:ユニット区切り) 0x1E(RS:レコード区切り)
ASCIIコード表 日本工業大学
id integer |
name text |
quantity integer |
remark text |
---|---|---|---|
1 | tomato | 100 | |
2 | potato | 120 | bagging |
3 | pumpkin | 50 | cutted |
sqlite> .mode ascii
sqlite> select * from product;
1tomato1002potato120bagging3pumpkin50cuttedsqlite>
.mode box
「.headers」の設定に関わらずカラム名が表示される。
SQLite 3 コマンドラインツールでselectの結果を見やすくする
sqlite> .mode box
sqlite> select * from product;
┌────┬─────────┬──────────┬─────────┐
│ id │ name │ quantity │ remark │
├────┼─────────┼──────────┼─────────┤
│ 1 │ tomato │ 100 │ │
│ 2 │ potato │ 120 │ bagging │
│ 3 │ pumpkin │ 50 │ cutted │
└────┴─────────┴──────────┴─────────┘
.mode csv
CSV形式で出力する。
SQLite 3 CSVデータを取り込む、CSVデータを出力する
id integer |
name text |
quantity integer |
remark text |
---|---|---|---|
1 | tomato | 100 | |
2 | potato | 120 | bagging |
3 | pumpkin | 50 | cutted |
sqlite> .mode csv
sqlite> select * from product;
1,tomato,100,""
2,potato,120,bagging
3,pumpkin,50,cutted
.mode column
カラムを空白で揃えて表示する。
「.headers on」でヘッダーを表示した方が見やすい。
SQLite 3 コマンドラインツールでselectの結果を見やすくする
sqlite> .mode column
sqlite> .headers on
sqlite> select * from product;
id name quantity remark
-- ------- -------- -------
1 tomato 100
2 potato 120 bagging
3 pumpkin 50 cutted
.mode html
htmlのtable要素に貼り付けたい時に使う。
タグ名は大文字になってしまうので、必要があればテキストエディタなどで修正する。
「.headers on」にするとカラム名をTHタグで囲んで出力してくれる。
id integer |
name text |
quantity integer |
remark text |
---|---|---|---|
1 | tomato | 100 | |
2 | potato | 120 | bagging |
3 | pumpkin | 50 | cutted |
sqlite> .mode html
sqlite> .headers on
sqlite> select * from product;
<TR><TH>id</TH>
<TH>name</TH>
<TH>quantity</TH>
<TH>remark</TH>
</TR>
<TR><TD>1</TD>
<TD>tomato</TD>
<TD>100</TD>
<TD></TD>
</TR>
<TR><TD>2</TD>
<TD>potato</TD>
<TD>120</TD>
<TD>bagging</TD>
</TR>
<TR><TD>3</TD>
<TD>pumpkin</TD>
<TD>50</TD>
<TD>cutted</TD>
</TR>
.mode insert
「.headers」の設定に関わらず、カラム名が表示される。
SQLite 3 selectの結果からinsert文を作る
id integer |
name text |
quantity integer |
remark text |
---|---|---|---|
1 | tomato | 100 | |
2 | potato | 120 | bagging |
3 | pumpkin | 50 | cutted |
sqlite> .mode insert
sqlite> select * from product;
INSERT INTO "table"(id,name,quantity,remark) VALUES(1,'tomato',100,'');
INSERT INTO "table"(id,name,quantity,remark) VALUES(2,'potato',120,'bagging');
INSERT INTO "table"(id,name,quantity,remark) VALUES(3,'pumpkin',50,'cutted');
.mode json
「.headers」の設定に関わらず、連想配列のフォーマットになる。
SQLite 3 JSON形式でデータを出力する
id integer |
name text |
quantity integer |
remark text |
---|---|---|---|
1 | tomato | 100 | |
2 | potato | 120 | bagging |
3 | pumpkin | 50 | cutted |
sqlite> .mode json
sqlite> select * from product;
[{"id":1,"name":"tomato","quantity":100,"remark":""},
{"id":2,"name":"potato","quantity":120,"remark":"bagging"},
{"id":3,"name":"pumpkin","quantity":50,"remark":"cutted"}]
.mode line
「.headers」の設定に関わらず、カラム名が表示される。
id integer |
name text |
quantity integer |
remark text |
---|---|---|---|
1 | tomato | 100 | |
2 | potato | 120 | bagging |
3 | pumpkin | 50 | cutted |
sqlite> .mode line
sqlite> select * from product;
id = 1
name = tomato
quantity = 100
remark =
id = 2
name = potato
quantity = 120
remark = bagging
id = 3
name = pumpkin
quantity = 50
remark = cutted
.mode list
デフォルトのモード。
sqlite> .mode list
sqlite> select * from product;
1|tomato|100|
2|potato|120|bagging
3|pumpkin|50|cutted
.mode markdown
「.headers」の設定に関わらずカラムは表示される。
SQLite 3 コマンドラインツールでselectの結果を見やすくする
sqlite> .mode markdown
sqlite> select * from product;
| id | name | quantity | remark |
|----|---------|----------|---------|
| 1 | tomato | 100 | |
| 2 | potato | 120 | bagging |
| 3 | pumpkin | 50 | cutted |
.mode quote
文字列をシングルクォートで囲み、データをカンマで区切った表示。
他のSQLに流用したい時に使う。
sqlite> .mode quote
sqlite> select * from product;
1,'tomato',100,''
2,'potato',120,'bagging'
3,'pumpkin',50,'cutted'
.mode table
「.headers」の設定に関わらずカラムが表示される。
SQLite 3 コマンドラインツールでselectの結果を見やすくする
sqlite> .mode table
sqlite> select * from product;
+----+---------+----------+---------+
| id | name | quantity | remark |
+----+---------+----------+---------+
| 1 | tomato | 100 | |
| 2 | potato | 120 | bagging |
| 3 | pumpkin | 50 | cutted |
+----+---------+----------+---------+
.mode tabs
タブ区切りで表示する。
SQLite 3 TSVデータを取り込む、TSVデータを出力する
sqlite> .mode tabs
sqlite> select * from product;
1 tomato 100
2 potato 120 bagging
3 pumpkin 50 cutted
.mode tcl
TCLのリスト要素として利用できる形式で出力される。
sqlite> .mode tcl
sqlite> select * from product;
"1" "tomato" "100" ""
"2" "potato" "120" "bagging"
"3" "pumpkin" "50" "cutted"
参考URL
-
Changing Output Formats
公式の出力に関するドキュメント
.saparatorコマンドに関しても掲載掲載してある。
https://www.sqlite.org/cli.html#changing_output_formats
-
SQLite備忘録: SQLite3 コマンドラインツールでカラム名を表示する「.headers」について
https://sfnovicenotes.blogspot.com/2021/07/sqlite-3-headers.html