SQLite:クエリの結果をCSVファイルとして保存するにはどうすればよいですか?


回答:


248

ここからとd5e5のコメント:

出力をcsv-modeに切り替え、ファイル出力に切り替える必要があります。

sqlite> .mode csv
sqlite> .output test.csv
sqlite> select * from tbl1;
sqlite> .output stdout

4
このファイルはどこに保存されていますか?
RayLoveless、

34
これは、標準出力、つまりおそらく画面に出力されます。出力をファイルに保存するには:sqlite> .output test.csv印刷結果を画面に復元するには:sqlite> .output stdout
d5e5

1
Nodeライブラリでこれを行う方法を見つけることができる場所へのポインター?
kuanb 2015年

2
特定のパスを使用する場合は、sqlite> .output C:/Users/jdoe/Documents/output.csvを使用します。
ダスティン

こんにちは!これは私がしました。私のクエリは完全に機能しましたが、ファイル出力は空です。誰かが理由を知っていますか?
Valeria LobosOssandón18年

144

csvファイルに列名を含めるには、次のようにします。

sqlite> .headers on
sqlite> .mode csv
sqlite> .output test.csv
sqlite> select * from tbl1;
sqlite> .output stdout

加えた変更を確認するには、次のコマンドを実行します。

sqlite> .show

出力:

echo: off   
explain: off   
headers: on   
mode: csv   
nullvalue: ""  
output: stdout  
separator: "|"   
stats: off   
width: 22 18 

3
列名を取得する方法を示してくれてありがとう!この答えはもっと高くする必要があります。
スタンジェームズ

sqlite3は以前のコンテンツを消去せずにファイルの最後に出力を追加することに注意してください。
kupgov 2016年

1
ただし、.output filename.csv実行するたびにファイルが作成または消去されます。
kupgov 2016年

25

gdw2およびd5e5からの適切な回答。少し簡単にするために、1つの一連のコマンドにまとめられた推奨事項を次に示します。

sqlite> .mode csv
sqlite> .output test.csv
sqlite> select * from tbl1;
sqlite> .output stdout

23

上記の回答に加えて、.once同様の方法で使用することもできます.output。これにより、指定したファイルに次のクエリのみが出力されるため、を使用する必要はありません.output stdout

したがって、上記の例では

.mode csv
.headers on
.once test.csv
select * from tbl1;

1

または、1行で実行することもできます(win10でテスト済み)

sqlite3 -help
sqlite3 -header -csv db.sqlite 'select * from tbl1;' > test.csv

おまけ:コマンドレットとパイプ(|)でPowerShellを使用する。

get-content query.sql | sqlite3 -header -csv db.sqlite > test.csv

ここで、query.sqlはSQLクエリを含むファイルです

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.