为了将查询结果(约4500万条记录)导出到CSV文件,我使用命令行shell:
$ sqlite3 db.db3
> .headers on
> .mode csv
> .once result.csv
> select .....
字符串
这花了大约9个小时来运行。我使用Python:
import sqlite3
import pandas as pd
conn = sqlite3.connect('db.db3')
df = pd.read_sql(query, conn)
df.to_csv('output.csv')
型
这花了大约20分钟。我理解为什么Python可能会快一点,但没有想到会有如此巨大的差异。为什么SQLite命令行shell这么慢?
1条答案
按热度按时间yjghlzjz1#
我在SQLite forum上得到了帮助。
似乎CLI方法的大部分运行时间都是串行磁盘I/O。如果我们可以先将整个查询加载到内存中,然后再写入,那么写入时间将是相当的。
下面是一个如何做到这一点的例子:
字符串