SQLite:如何将查询结果另存为CSV文件?


Answers:


249

这里和d5e5的评论:

您必须将输出切换到csv模式并切换到文件输出。

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

4
该文件保存在哪里?
RayLoveless 2011年

34
它被打印到标准输出,即可能是屏幕上。要将输出保存到文件中:sqlite> .output test.csv要将打印结果恢复到屏幕上,请执行以下操作:sqlite> .output stdout
d5e5 2011年

1
关于可以在w / Node库中找到如何执行此操作的指针?
kuanb

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
感谢您展示如何获取列名!这个答案需要更高。
Stan James

请注意,sqlite3将输出追加到文件末尾,而不会删除以前的内容。
kupgov

1
但是每次.output filename.csv执行都会创建或删除文件。
kupgov '16

25

来自gdw2和d5e5的良好答案。为了使操作更简单一些,以下是通过一系列命令汇总的建议:

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

另外,您也可以一行完成(在win10中测试)

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

奖励:将Powershell与cmdlet和管道(|)配合使用。

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

其中query.sql是包含SQL查询的文件

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.