SELECT文の実行結果などをファイルへ出力する
コマンドラインツールでSELECT文を実行したりSQLiteで用意されているコマンドを実行したりするとその結果は画面上に表示されるのですが、「.output」コマンドを使うと画面ではなくファイルへ出力するように変更できます。ここでは「.output」コマンドを使って出力先をファイルへ変更する方法について解説します。
「.output」コマンドの使い方は次の通りです。
.output ?FILENAME?
引数に出力先のファイル名を指定します。ファイル名はSQLiteのコマンドラインツールを実行したカレントディレクトリからの相対パス又は絶対パスで指定して下さい。出力先をファイルではなく画面表示に戻す場合には引数に「stdout」を指定します。
例として出力先を「d:\sqlite\data\output.txt」へ行う場合は次のように実行します。(下記はカレントディレクトリが「d:\sqlite」の場合です)。
絶対パスの場合: .output d:/sqlite/data/output.txt 相対パスの場合: .output ./data/output.txt
※ Windows環境の場合でも、ファイルの区切り文字は「\」ではなく「/」を使用して下さい。
ファイル名を指定して「.output」コマンドを実行すると、SELECT文の実行結果だけではなく画面へ出力されていたものは全て指定したファイルへ行われるようになります。指定したファイルが存在しないときは新規にファイルを作成した上で出力され、存在するファイルを指定した場合は追加される形で出力されます。
現在設定されている出力先を確認したい場合には「.show」コマンドを使用して下さい。
.show
「output」の項目を見ると現在の設定は「stdout」となっており現時点で何か出力が伴うことを行うと画面に対して行われます。この「.show」コマンドの実行結果も画面に表示されていますし、次のようなSELECT文を実行した場合も結果は画面に表示されます。
select * from staff;
それでは出力先をファイルへ変更してみます。今回はカレントディレクトリの「logdata.txt」というファイル名へ出力するようにしました。
.output ./logdata.txt
先ほどと同じSELECT文を実行してみます。今度は実行結果が画面に表示されません。実行結果は出力先に指定したファイルへ書き込まれています。
select * from staff;
では作成されたファイルを確認してみます。カレントディレクトリを見ると「logdata.txt」というファイルが作成されています。今回はもともと存在しないファイルへ出力しましたので新しいファイルが作成されています。
「logdata.txt」ファイルをテキストエディタで開くと次のようにSELECT文を実行した結果が書き込まれています。
出力先の現在の設定を確認してみます。次のように「.show」コマンドを実行して下さい。
.show
「.show」コマンドの実行結果も画面ではなくファイルへ出力されているため画面上では何も表示されません。現在出力先として設定してある「logdata.txt」ファイルをテキストエディタで開いて下さい。
先ほどと違って出力先のファイルは既に存在しているため、既存のファイルに追加する形で「.show」コマンドの実行結果が書き込まれています。「output」の項目を見て頂くと出力先がファイル名に設定されていることが確認できます。
出力先をファイルから画面に戻す場合には特別な値「stdout」を引数に指定して「.output」コマンドを実行して下さい。
.output stdout
これで出力先がファイルから画面に戻りました。では改めてSELECT文を実行してみます。
select * from staff;
SELECT文の実行結果が画面に表示されました。このように出力先をファイルへ変更しても、いつでも出力を画面へ行うように戻すことができます。
( Written by Tatsuo Ikura )