.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文でデータを取得し出力させて見ると次のように表示されます。
sqlite> select * from goods; 1|デジタルカメラ|35000 2|ノートPC|72000 3|プリンター|27500 sqlite>
なお区切り文字は「.separator」コマンドで変更可能です。
csvモード
csvモードは取得したデータ1行毎に1行で出力します。1つの行に含まれるデータはカラム毎にカンマ(,)で区切って出力されます。
.mode csv
サンプル用のテーブルからSELECT文でデータを取得し出力させて見ると次のように表示されます。
sqlite> select * from goods; 1,"デジタルカメラ",35000 2,"ノートPC",72000 3,"プリンター",27500 sqlite>
「list」モードと異なり、文字列の値はダブルクオーテーションで囲って表示されました。
tabsモード
tabsモードは取得したデータ1行毎に1行で出力します。1つの行に含まれるデータはカラム毎にタブで区切って出力されます。
.mode tabs
サンプル用のテーブルからSELECT文でデータを取得し出力させて見ると次のように表示されます。
sqlite> select * from goods; 1 デジタルカメラ 35000 2 ノートPC 72000 3 プリンター 27500 sqlite>
タブは8文字間隔で設定されているようです。
columnモード
columnモードは取得したデータ1行毎に1行で出力します。1つの行に含まれるデータはカラム毎に左揃えを行って表示されます。
.mode column
サンプル用のテーブルからSELECT文でデータを取得し出力させて見ると次のように表示されます。
sqlite> select * from goods; 1 デジタルカメラ 35000 2 ノートPC 72000 3 プリンター 27500 sqlite>
カラム毎の幅は決まっており、幅を超えるデータが含まれていた場合は切り捨てられて表示されます。なおカラム毎の幅は「.width」コマンドで変更することができます。
lineモード
lineモードは取得したデータを1行毎に処理し、カラム毎に行を変えて表示されます。
.mode line
サンプル用のテーブルからSELECT文でデータを取得し出力させて見ると次のように表示されます。
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文でデータを取得し出力させて見ると次のように表示されます。
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文でデータを取得し出力させて見ると次のように表示されます。
sqlite> select * from goods; "1"|"デジタルカソ201ソ211"|"35000"| "2"|"ノ\201[トPC"|"72000"| "3"|"プソ212ンタ\201["|"27500"| sqlite>
全ての値を文字列として出力しているようです。このモードにした場合だけ日本語が文字化けしましたが理由は分かっていません。
insertモード
insertモードは取得したデータ1行毎に、データを追加した時のINSERT文の形式で表示します。
.mode insert
サンプル用のテーブルからSELECT文でデータを取得し出力させて見ると次のように表示されます。
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」に置き換わっています。