sqlite コマンドでクエリの出力結果を変更する

sqlite コマンドでクエリの出力結果を変更する

sqliteで、コマンドでクエリの出力結果を変更する手順を記述してます。「.mode」で出力する結果(モード)を指定することで可能です。

環境

  • OS windows11 home
  • sqlite 3.37.1
  • DB Browser for SQLite 3.12.2

手順

コマンドでクエリの出力結果を変更するには、「.mode」を使用します。

.mode 出力モード

指定できるモードは以下となります。

ascii  1行で表示
box      枠
csv      カンマ区切り
column   左揃え
html     HTML
insert   INSERT
json     json
line     各カラム毎に行を分けて出力
list     デフォルト
markdown markdown形式
quote    SQLリテラル
table  テーブル
tabs     タブ区切り
tcl      TCLのlist形式

実際に、いくつか指定して実行してみます。

sqlite> .mode ascii
sqlite> select * from sampletbl;
idnameage1taro102humiko203saburo304siro405goro506rokuko60

sqlite> .mode box 
sqlite> select * from sampletbl;
┌────┬────────┬─────┐
│ id │  name  │ age │
├────┼────────┼─────┤
│ 1  │ taro   │ 10  │
│ 2  │ humiko │ 20  │
│ 3  │ saburo │ 30  │
│ 4  │ siro   │ 40  │
│ 5  │ goro   │ 50  │
│ 6  │ rokuko │ 60  │
└────┴────────┴─────┘

sqlite> .mode column  
sqlite> select * from sampletbl;
id  name    age
--  ------  ---
1   taro    10
2   humiko  20
3   saburo  30
4   siro    40
5   goro    50
6   rokuko  60

sqlite> .mode html
sqlite> select * from sampletbl;
<TR><TH>id</TH>
<TH>name</TH>
<TH>age</TH>
</TR>
<TR><TD>1</TD>
<TD>taro</TD>
<TD>10</TD>
</TR>
<TR><TD>2</TD>
<TD>humiko</TD>
<TD>20</TD>
</TR>
<TR><TD>3</TD>
<TD>saburo</TD>
<TD>30</TD>
</TR>
<TR><TD>4</TD>
<TD>siro</TD>
<TD>40</TD>
</TR>
<TR><TD>5</TD>
<TD>goro</TD>
<TD>50</TD>
</TR>
<TR><TD>6</TD>
<TD>rokuko</TD>
<TD>60</TD>
</TR>

sqlite> .mode json  
sqlite> select * from sampletbl;
[{"id":1,"name":"taro","age":10},
{"id":2,"name":"humiko","age":20},
{"id":3,"name":"saburo","age":30},
{"id":4,"name":"siro","age":40},
{"id":5,"name":"goro","age":50},
{"id":6,"name":"rokuko","age":60}]

sqlite> .mode insert
sqlite> select * from sampletbl;
INSERT INTO "table"(id,name,age) VALUES(1,'taro',10);
INSERT INTO "table"(id,name,age) VALUES(2,'humiko',20);
INSERT INTO "table"(id,name,age) VALUES(3,'saburo',30);
INSERT INTO "table"(id,name,age) VALUES(4,'siro',40);
INSERT INTO "table"(id,name,age) VALUES(5,'goro',50);
INSERT INTO "table"(id,name,age) VALUES(6,'rokuko',60);

sqlite> .mode markdown
sqlite> select * from sampletbl;
| id |  name  | age |
|----|--------|-----|
| 1  | taro   | 10  |
| 2  | humiko | 20  |
| 3  | saburo | 30  |
| 4  | siro   | 40  |
| 5  | goro   | 50  |
| 6  | rokuko | 60  |

sqlite> .mode quote
sqlite> select * from sampletbl;
'id','name','age'
1,'taro',10
2,'humiko',20
3,'saburo',30
4,'siro',40
5,'goro',50
6,'rokuko',60

sqlite> .mode table
sqlite> select * from sampletbl;
+----+--------+-----+
| id |  name  | age |
+----+--------+-----+
| 1  | taro   | 10  |
| 2  | humiko | 20  |
| 3  | saburo | 30  |
| 4  | siro   | 40  |
| 5  | goro   | 50  |
| 6  | rokuko | 60  |
+----+--------+-----+

sqlite> .mode tcl   
sqlite> select * from sampletbl;
"id" "name" "age"
"1" "taro" "10"
"2" "humiko" "20"
"3" "saburo" "30"
"4" "siro" "40"
"5" "goro" "50"
"6" "rokuko" "60"

変更されていることが確認できます。

使用しているモード

現在使用しているモードは「.mode」で確認できます。

sqlite> .mode      
current output mode: line