Python和sqlite3 - 添加数千行
我有一个.sql文件,里面有成千上万条单独的插入语句。执行这些语句花费的时间太长了。我想找个更高效的方法来处理这些插入。在Python中,sqlite3库不能使用像“.read”或“.import”这样的命令,但执行脚本的速度对于这么多插入来说也太慢了。
我安装了sqlite3.exe这个命令行工具,希望能用“.read”或“.import”命令,但我还不太明白怎么用。通过Django在Eclipse中运行这个工具不行,因为它要求数据库文件在C盘的根目录,这听起来很奇怪。通过命令行运行也不行,因为它找不到我的数据库文件(除非我做错了什么)。
有没有什么建议?
谢谢!
4 个回答
2
除了在一个事务中批量执行查询之外,还可以尝试对数据库文件进行 VACUUM
和 ANALYZE
操作。这对我遇到的类似问题有帮助。
3
你有没有试过把所有的插入操作放在一个事务里运行?如果没有的话,每次插入都会被当作一个单独的事务来处理。具体的情况你可以去看看SQLite的常见问题解答,这里有个链接在这里。
12
你在使用事务吗?默认情况下,SQLite会为每个插入语句单独创建一个事务,这样会让速度变得很慢。
默认情况下,sqlite3模块在执行数据修改语言(DML)语句(也就是插入、更新、删除或替换)之前,会自动打开一个事务。
如果你在开始时手动创建一个事务,然后在最后提交它,这样会大大提高速度。