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

时间:2011-05-20 19:57:14

标签: sqlite csv

我是SQLite的新手。有没有办法可以将查询结果导出到CSV文件中?

6 个答案:

答案 0 :(得分:222)

来自here和d5e5的评论:

您必须将输出切换到csv-mode并切换到文件输出。

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

答案 1 :(得分:132)

要在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 

答案 2 :(得分:23)

gdw2和d5e5的答案很好。为了使它更简单,这些建议在一系列命令中汇总在一起:

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

答案 3 :(得分:20)

除上述答案外,您还可以.once使用与.output类似的方式。这会将仅输出到指定文件的下一个查询,这样您就不必跟随.output stdout

所以在上面的例子中

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

答案 4 :(得分:3)

或者,您也可以一行完成(在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查询的文件

答案 5 :(得分:0)

所有现有的答案只能在sqlite命令行上运行,如果您想构建可重用的脚本,这是不理想的。使用Python可以轻松构建可以以编程方式执行的脚本。

import pandas as pd
import sqlite3

conn = sqlite3.connect('your_cool_database.sqlite')

df = pd.read_sql('SELECT * from orders', conn)
df.to_csv('orders.csv', index = False)

您可以自定义查询,以仅将部分sqlite表导出到CSV文件。

您还可以运行一个命令将所有sqlite表导出到CSV文件:

for table in c.execute("SELECT name FROM sqlite_master WHERE type='table';").fetchall():
    t = table[0]
    df = pd.read_sql('SELECT * from ' + t, conn)
    df.to_csv(t + '_one_command.csv', index = False)

有关更多信息,请参见here