.modeコマンド

「.mode」コマンドは出力モードを設定するために使用します。

.mode MODE ?TABLE?

指定可能なMODEは次のいずれかです。

csv      カンマ区切りで出力
column   カラム毎に左揃えで出力
html     HTMLのTABLE形式で出力
insert   INSERT文として出力
line     各カラム毎に行を分けて出力
list     区切り文字でカラムを区切り1行で出力(デフォルト)
tabs     タブ区切りで出力
tcl      TCLのlist形式で出力

では順に確認していきます。

listモード

listモードは取得したデータ1行毎に1行で出力します。1つの行に含まれるデータはカラム毎に区切り文字で区切って出力されます。

.mode list

サンプル用のテーブルからSELECT文でデータを取得し出力させて見ると次のように表示されます。

p1-1

sqlite> select * from goods;
1|デジタルカメラ|35000
2|ノートPC|72000
3|プリンター|27500
sqlite>

なお区切り文字は「.separator」コマンドで変更可能です。

csvモード

csvモードは取得したデータ1行毎に1行で出力します。1つの行に含まれるデータはカラム毎にカンマ(,)で区切って出力されます。

.mode csv

サンプル用のテーブルからSELECT文でデータを取得し出力させて見ると次のように表示されます。

p1-2

sqlite> select * from goods;
1,"デジタルカメラ",35000
2,"ノートPC",72000
3,"プリンター",27500
sqlite>

「list」モードと異なり、文字列の値はダブルクオーテーションで囲って表示されました。

tabsモード

tabsモードは取得したデータ1行毎に1行で出力します。1つの行に含まれるデータはカラム毎にタブで区切って出力されます。

.mode tabs

サンプル用のテーブルからSELECT文でデータを取得し出力させて見ると次のように表示されます。

p1-3

sqlite> select * from goods;
1       デジタルカメラ  35000
2       ノートPC        72000
3       プリンター      27500
sqlite>

タブは8文字間隔で設定されているようです。

columnモード

columnモードは取得したデータ1行毎に1行で出力します。1つの行に含まれるデータはカラム毎に左揃えを行って表示されます。

.mode column

サンプル用のテーブルからSELECT文でデータを取得し出力させて見ると次のように表示されます。

p1-4

sqlite> select * from goods;
1           デジタルカメラ  35000
2           ノートPC        72000
3           プリンター      27500
sqlite>

カラム毎の幅は決まっており、幅を超えるデータが含まれていた場合は切り捨てられて表示されます。なおカラム毎の幅は「.width」コマンドで変更することができます。

lineモード

lineモードは取得したデータを1行毎に処理し、カラム毎に行を変えて表示されます。

.mode line

サンプル用のテーブルからSELECT文でデータを取得し出力させて見ると次のように表示されます。

p1-5

sqlite> select * from goods;
   id = 1
 name = デジタルカメラ
price = 35000

   id = 2
 name = ノートPC
price = 72000

   id = 3
 name = プリンター
price = 27500
sqlite>

取得したデータの1行毎に、1カラム1行で「カラム名 = 値」の形式で表示します。

htmlモード

htmlモードは取得したデータをHTMLのTABLE形式に変換して表示します。

.mode html

サンプル用のテーブルからSELECT文でデータを取得し出力させて見ると次のように表示されます。

p1-6

sqlite> select * from goods;
<TR><TD>1</TD>
<TD>デジタルカメラ</TD>
<TD>35000</TD>
</TR>
<TR><TD>2</TD>
<TD>ノートPC</TD>
<TD>72000</TD>
</TR>
<TR><TD>3</TD>
<TD>プリンター</TD>
<TD>27500</TD>
</TR>
sqlite>

1行毎に<tr>要素を持ち、カラム毎に<td>要素が記述されます。ただ<table>要素は記述されないようですので注意して下さい。

tclモード

tclモードは取得したデータをTCLのリスト形式に変換して表示します。

.mode tcl

サンプル用のテーブルからSELECT文でデータを取得し出力させて見ると次のように表示されます。

p1-7

sqlite> select * from goods;
"1"|"デジタルカソ201ソ211"|"35000"|
"2"|"ノ\201[トPC"|"72000"|
"3"|"プソ212ンタ\201["|"27500"|
sqlite>

全ての値を文字列として出力しているようです。このモードにした場合だけ日本語が文字化けしましたが理由は分かっていません。

insertモード

insertモードは取得したデータ1行毎に、データを追加した時のINSERT文の形式で表示します。

.mode insert

サンプル用のテーブルからSELECT文でデータを取得し出力させて見ると次のように表示されます。

p1-8

sqlite> select * from goods;
INSERT INTO table VALUES(1,'デジタルカメラ',35000);
INSERT INTO table VALUES(2,'ノートPC',72000);
INSERT INTO table VALUES(3,'プリンター',27500);
sqlite>

実際に実行されたINSERT文を保持していてそれを表示しているわけではありません。表示されたINSERT文はテーブル名が「table」に置き換わっています。