SQLite 資料一覧
クエリの出力形式を変更する
2008/4/10更新
対応バージョン: 3.5.7
クエリのデフォルトの出力は通常1レコードにつき1行で、ヘッダなし、区切り文字が「|」である。
sqlite> select * from customer; 1|foo|01-234-5678|park 2|bar|99-999-9999|apart 3|baz||
この出力形式を変更するにはまず現在の設定を.showで確認し、必要に応じて各種設定を変更するとよい。
sqlite> .show echo: off explain: off headers: off mode: list nullvalue: "" output: stdout separator: "|" width:
以下、それぞれの設定を説明する。
.echo ON|OFF
コマンドechoのON/OFFを切り替える。
sqlite> .echo ON sqlite> select * from customer; select * from customer; ← コマンドecho 1|foo|01-234-5789|park 2|bar|99-999-9999|apart 3|baz||
.explain ON|OFF
EXPLAIN(説明用)に適した設定に複数パラメータをまとめて変更する。
.explain OFF(デフォルト)
sqlite> .show echo: off explain: off headers: off mode: list nullvalue: "" output: stdout separator: "|" width: sqlite> select * from customer; 1|foo|01-234-5789|park 2|bar|99-999-9999|apart 3|baz||
.explain ON
sqlite> .explain ON sqlite> .show echo: off explain: on ← 変更 headers: on ← 変更 mode: explain ← 変更 nullvalue: "" output: stdout separator: "|" width: 4 13 4 4 4 13 2 13 ← 変更 sqlite> select * from customer; id name tel addr ---- ------------- ---- ---- 1 foo 01-234-5789 park 2 bar 99-999-9999 apart 3 baz
.headers ON|OFF
ヘッダ出力のON/OFFを切り替える。
sqlite> .headers ON sqlite> select * from customer; id|name|tel|address ← ヘッダ 1|foo|01-234-5789|park 2|bar|99-999-9999|apart 3|baz||
.mode
.modeを使うことでデータの出力形式を変更できる。
以下、指定可能な出力形式を示す。
csv
カンマ区切りのCSVとして出力する。
sqlite> .mode csv customer sqlite> select * from customer; 1,foo,01-234-5789,park 2,bar,99-999-9999,apart 3,baz,"",""
.nullvalueの設定でNULL値の代替文字列を指定できる。
sqlite> .nullvalue "N/A" sqlite> select * from customer; 1,foo,01-234-5789,park 2,bar,99-999-9999,apart 3,baz,N/A,N/A
column
カラム毎にスペースで区切って桁揃えをしつつ出力する。
sqlite> .mode column customer sqlite> select * from customer; 1 foo 01-234-5789 park 2 bar 99-999-9999 apart 3 baz
各カラムの桁は.widthで指定できる。各カラムともデフォルトは0(自動調整)。
sqlite> .width 3 8 12 16 customer sqlite> select * from customer; 1 foo 01-234-5789 park 2 bar 99-999-9999 apart 3 baz
html
HTMLのtableタグとして出力する。
sqlite> .mode html customer sqlite> select * from customer; <TR><TD>1</TD> <TD>foo</TD> <TD>01-234-5789</TD> <TD>park</TD> </TR> <TR><TD>2</TD> <TD>bar</TD> <TD>99-999-9999</TD> <TD>apart</TD> </TR> <TR><TD>3</TD> <TD>baz</TD> <TD></TD> <TD></TD> </TR>
insert
SQLのinsert文として出力する。
sqlite> .mode insert customer sqlite> select * from customer; INSERT INTO customer VALUES(1,'foo','01-234-5789','park'); INSERT INTO customer VALUES(2,'bar','99-999-9999','apart'); INSERT INTO customer VALUES(3,'baz','','');
line
1カラムにつき1行出力する。
sqlite> .mode line customer sqlite> select * from customer; id = 1 name = foo tel = 01-234-5789 address = park id = 2 name = bar tel = 99-999-9999 address = apart id = 3 name = baz tel = address =
list
1レコードにつき1行出力するデフォルトの形式である。
sqlite> .mode list customer sqlite> select * from customer; 1|foo|01-234-5789|park 2|bar|99-999-9999|apart 3|baz||
.separatorで区切り文字を変更できる。
個々のテーブルに対する変更はできず、全てのテーブルが対象となる。
sqlite> .separator ":" sqlite> select * from customer; 1:foo:01-234-5789:park 2:bar:99-999-9999:apart 3:baz::
tabs
カラム毎にタブで区切って出力する。
sqlite> .mode tab customer sqlite> select * from customer; 1 foo 01-234-5789 park 2 bar 99-999-9999 apart 3 baz
tcl
Tclのリスト形式で出力する。
sqlite> .mode tcl customer sqlite> select * from customer; "1" "foo" "01-234-5789" "park" "2" "bar" "99-999-9999" "apart" "3" "baz" "" ""
.output stdout|<ファイル名>
通常のstdoutへの出力をファイルに切り替える。
qlite> select * from customer; 1|foo|01-234-5789|park 2|bar|99-999-9999|apart 3|baz|| sqlite> .output data.out sqlite> select * from customer; (何も出力されない) sqlite> .q % cat data.out 1|foo|01-234-5789|park 2|bar|99-999-9999|apart 3|baz||