どうも、nippa です。
SQLite3 は軽量なファイルベースのデータベースです。SQLite3 を取り扱う必要がでてき たので、 SQLite3 の出力モードについてまとめておきたいと思います。
環境
- macOS 12.6
- SQLite3 3.43.0
現在の出力モードの確認
現在の出力モードは SQLite3 でデータベースにアクセスした状態で以下のコマンドで確 認できます。
.mode # 出力 current output mode: list
出力モード種類
.mode [modeオプション]
で出力形式を変更します。各 mode オプションは以下のテーブ
ルになります。
mode オプション | 詳細 |
---|---|
ascii | 列や行が 0x1F(単位区切り文字)と 0x1E(記録区切り文字)で区切られた形式で出力する。 |
box | ユニコードの罫線文字を使用してテーブルを描画される。このモードは視覚的に整理された表として表示するのに適している。 |
csv | コンマ区切り値形式で出力する。Output 先をファイルに変更すると直接 CSV ファイルとして出力できる。 |
column | 結果を列で整理して出力する。.width コマンドを使用して、各列の幅を調整することができる。 |
html | HTML の<table> 要素を使用して結果を表現する。 |
insert | 結果を SQL の INSERT 文として出力する。 |
json | 結果を JJSON 配列として出力する。 |
line | 1 行に 1 つの値を出力する。 |
list | 値をパイプ記号"|"で区切って出力する。 |
markdown | Markdown 形式の表として結果を出力する。 |
qbox | box モードのショートハンドで、ラップ幅を 60、引用符で囲むオプションがデフォルトで有効になる。 |
quote | SQL の文字列リテラルとして結果をエスケープする。データを SQL 文として安全に扱う場合に便利。 |
table | ASCII アートを使用してテーブルを描画する。box モードと似ていますが、ユニコードではなく ASCII 文字のみを使用する。 |
tabs | タブ区切り値形式で結果を出力する。 |
tc | TCL リスト要素として結果を出力する。 |
出力モードの出力例
以下のようなテーブルで出力テストをしています。
id(integer) | name(text) |
---|---|
1 | Bob |
2 | Alice |
- ascii
1Bob2Alice
- box
┌────┬───────┐
│ id │ name │
├────┼───────┤
│ 1 │ Bob │
│ 2 │ Alice │
└────┴───────┘
1,Bob
2,Alice
- column
id name
-- -----
1 Bob
2 Alice
- html
<TR><TD>1</TD>
<TD>Bob</TD>
</TR>
<TR><TD>2</TD>
<TD>Alice</TD>
</TR>
- insert
INSERT INTO "table" VALUES(1,'Bob');
INSERT INTO "table" VALUES(2,'Alice');
[{"id":1,"name":"Bob"},
{"id":2,"name":"Alice"}]
- line
id = 1
name = Bob
id = 2
name = Alice
- list
1|Bob
2|Alice
| id | name |
|----|-------|
| 1 | Bob |
| 2 | Alice |
- qbox
┌────┬─────────┐
│ id │ name │
├────┼─────────┤
│ 1 │ 'Bob' │
│ 2 │ 'Alice' │
└────┴─────────┘
- quote
1,'Bob'
2,'Alice'
- table
+----+-------+
| id | name |
+----+-------+
| 1 | Bob |
| 2 | Alice |
+----+-------+
- tabs
1 Bob
2 Alice
- tcl
"1" "Bob"
"2" "Alice"
感想
今回 SQLite3 の出力モードについてまとめました。出力形式を変更できると便利なこと もあるので、知っておいても損はないと思います。
ではでは、また次回。