概要
SQLite3 のコマンドラインツールでコマンドやSQLの実行結果の
出力先を切り替える方法について。
似たコマンドに
「
.once
」がある。
環境
- Windows 10 64bit
- SQLite3 (3.29.0) Command-Line Shell
ヘルプの内容
以下の内容しか表示されないが、「.once」 と同じように「-x」や「-e」のオプションが使える。
sqlite> .help .output
.output ?FILE? Send output to FILE or stdout if FILE is omitted
If FILE begins with '|' then open it as a pipe.
テキストファイルに出力する
以下の例ではsample_tableとsampletable2の内容をsample.txtに出力している。
4行目の引数なしで「.output」を実行することでファイル出力を止める。
(出力先をファイルからコンソールに切り替えている)
sqlite> .output sample.txt
sqlite> select * from sample_table;
sqlite> select * from sample_table2;
sqlite> .output
テキストエディタで表示する
テキストエディタが起動して表示される。
起動するのは出力先を切り替えたタイミング。(3行目)
そこから編集したり保存しなおしたりできる。
sqlite> .output -e
sqlite> select * from sample_table;
sqlite> .output
スプレッドシートとして表示する
CSVエディタが起動して表示される。
起動するのは出力先を切り替えたタイミング。(3行目)
そこから編集したり保存しなおしたりできる。
sqliteの文字コードがutf-8のため、Microsoft Excelでは文字化けしてしまう。
sqlite> .output -x
sqlite> select * from sample_table;
sqlite> .output
Select文以外も出力できる
例えば、ヘルプをテキストファイルに保存しておきたい場合は・・・
sqlite> .output help.txt
sqlite> .help
sqlite> .output
パイプを使って別のコマンドに渡す
コマンドプロンプトやbashでおなじみのパイプ「|」で
出力結果を他のコマンドに渡すことができる。
こちらも文字コードの都合上、文字化けするのことがある。
sqlite> select * from sample_table
1|test001
2|sample002
sqlite> .output '| findstr test'
sqlite> select * from sample_table
sqlite> .output
1|test001
参考URL
-
Command Line Shell For SQLite
公式のコマンドラインツールに関するドキュメント
https://www.sqlite.org/cli.html
-
あさはか備忘録: SQLite3 「.once」と「.output」について
https://sfnovicenotes.blogspot.com/2019/10/sqlite3-onceoutput.html