是否有一种方法可以将查询结果导出到CSV文件?
当前回答
要将列名包含到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
其他回答
要将列名包含到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
除了上面的答案,你还可以用类似于.output的方式使用.once。这只输出到指定文件的下一个查询,因此您不必在.output stdout后面。
在上面的例子中
.mode csv
.headers on
.once test.csv
select * from tbl1;
或者你也可以在一行中完成(在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
在哪里查询。sql是一个包含sql查询的文件
来自gdw2和d5e5的好答案。为了让它更简单一点,这里是在一系列命令中组合在一起的建议:
sqlite> .mode csv
sqlite> .output test.csv
sqlite> select * from tbl1;
sqlite> .output stdout
从这里和d5e5的评论:
您必须将输出切换到csv模式并切换到文件输出。
sqlite> .mode csv
sqlite> .output test.csv
sqlite> select * from tbl1;
sqlite> .output stdout