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

2admgd59  于 2022-12-29  发布在  SQLite
关注(0)|答案(6)|浏览(190)

是否有办法将查询结果导出到CSV文件中?

5fjcxozz

5fjcxozz1#

来自here和d5e5的评论:
您必须将输出切换到csv模式并切换到文件输出。

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

zazmityj2#

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

zxlwwiss3#

除了上面的答案,你也可以用类似于.output的方式使用.once,这样就只输出下一个查询到指定的文件,这样你就不必在后面跟着.output stdout了。
在上面的例子中

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

ojsjcaue4#

gdw2和d5e5给出了很好的答案。为了简单一点,下面是一系列命令中的建议:

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

0s0u357o5#

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

k2fxgqgv

k2fxgqgv6#

所有现有的解决方案都只能在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

相关问题