我有一个包含数千个单独插入语句的.sql文件。这一切都需要永远。我试图找到一种更有效地做到这一点的方法。在python中,sqlite3库不能执行“.read”或“.import”之类的操作,但executecript对于那么多插入来说太慢了。
我安装了sqlite3.exe shell,希望使用“.read”或“.import”但我无法弄清楚如何使用它。在eclipse中通过django运行它不起作用,因为它期望数据库位于我的C驱动器的根目录,这似乎很愚蠢。通过命令行运行它不起作用,因为它找不到我的数据库文件(除非我做错了)
任何提示?
谢谢!
答案 0 :(得分:11)
您使用的是交易吗? SQLite将为每个insert statement individually by default创建一个事务,这会减慢速度。
默认情况下,sqlite3模块会打开 事务隐式地在数据之前 修改语言(DML)语句 (即INSERT / UPDATE / DELETE / REPLACE)
如果您在开始时手动创建一个单独的事务并在最后提交它,那么它将加快速度。
答案 1 :(得分:3)
您是否尝试在单个事务中运行插入? 如果没有,那么每个插入都被视为一个事务,并且......你可以阅读这个here
的SQLite FAQ答案 2 :(得分:2)
同时尝试VACUUM
和ANALYZE
数据库文件。它帮助了我的类似问题。
答案 3 :(得分:1)
使用参数化查询
和
使用交易。