gdw*_*dw2 228
从这里和d5e5的评论:
您必须将输出切换到csv-mode并切换到文件输出.
sqlite> .mode csv
sqlite> .output test.csv
sqlite> select * from tbl1;
sqlite> .output stdout
Run Code Online (Sandbox Code Playgroud)
小智 135
要在csv文件中包含列名,可以执行以下操作:
sqlite> .headers on
sqlite> .mode csv
sqlite> .output test.csv
sqlite> select * from tbl1;
sqlite> .output stdout
Run Code Online (Sandbox Code Playgroud)
要验证您所做的更改,可以运行以下命令:
sqlite> .show
Run Code Online (Sandbox Code Playgroud)
输出:
echo: off
explain: off
headers: on
mode: csv
nullvalue: ""
output: stdout
separator: "|"
stats: off
width: 22 18
Run Code Online (Sandbox Code Playgroud)
小智 23
gdw2和d5e5的答案很好.为了使它更简单,这些建议在一系列命令中汇集在一起:
sqlite> .mode csv
sqlite> .output test.csv
sqlite> select * from tbl1;
sqlite> .output stdout
Run Code Online (Sandbox Code Playgroud)
小智 21
除了上述答案,您还可以使用.once类似的方式.output.这仅输出指定文件的下一个查询,因此您不必遵循.output stdout.
所以在上面的例子中
.mode csv
.headers on
.once test.csv
select * from tbl1;
Run Code Online (Sandbox Code Playgroud)
所有现有的答案只能在 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)
Run Code Online (Sandbox Code Playgroud)
您可以自定义查询以仅将部分 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)
Run Code Online (Sandbox Code Playgroud)
请参阅此处了解更多信息。
或者,您可以在一行中完成(在 win10 中测试)
sqlite3 -help
sqlite3 -header -csv db.sqlite 'select * from tbl1;' > test.csv
Run Code Online (Sandbox Code Playgroud)
奖励:将 powershell 与 cmdlet 和管道 (|) 一起使用。
get-content query.sql | sqlite3 -header -csv db.sqlite > test.csv
Run Code Online (Sandbox Code Playgroud)
其中 query.sql 是包含 SQL 查询的文件
| 归档时间: |
|
| 查看次数: |
109602 次 |
| 最近记录: |