是否有一种方法可以将查询结果导出到CSV文件?
从这里和d5e5的评论:
您必须将输出切换到csv模式并切换到文件输出。
sqlite> .mode csv
sqlite> .output test.csv
sqlite> select * from tbl1;
sqlite> .output stdout
来自gdw2和d5e5的好答案。为了让它更简单一点,这里是在一系列命令中组合在一起的建议:
sqlite> .mode csv
sqlite> .output test.csv
sqlite> select * from tbl1;
sqlite> .output stdout
要将列名包含到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查询的文件
所有现有的答案都只能从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)
更多信息请看这里。
虽然.mode csv和.output(或.once)命令很好,但它们只能在SQLite命令行界面(Windows上也称为SQLite .exe)中工作。
如果您不使用CLI,您仍然可以使用fileio_append(path, string)函数在sqlean-fileio扩展的帮助下写入输出文件。
例如:
create table people(id integer primary key, name text);
insert into people(id, name) values
(11, 'Alice'), (12, 'Bob'), (13, 'Cindy');
select sum(
fileio_append('people.csv', format('%d,%s', id, name) || char('10'))
)
from people;
在此之后,people.csv将有以下内容:
11,Alice
12,Bob
13,Cindy
推荐文章
- 在Ruby中输出数组到CSV
- 我如何在PHP中输出一个UTF-8 CSV, Excel将正确读取?
- Mac SQLite编辑器
- 如何加载一个tsv文件到熊猫数据框架?
- 从csv文件创建字典?
- 从url读取csv
- SQLite:如何将查询结果保存为CSV文件?
- Ruby on Rails -从CSV文件导入数据
- 在PHP中为用户创建一个CSV文件
- SQLite中“如果不存在,请插入”语句
- 转义单引号字符用于SQLite查询
- 如何创建默认值“现在”的时间戳列?
- read_csv . pandas中的Datetime dtypes
- 如何检索插入id后插入行在SQLite使用Python?
- 创建存储过程和SQLite?