如果向sqlite3数据库中插入大量数据,速度会比较慢,这个时候可以进行优化,方式有两种:
1. 使用事务:(sql脚本)
BEGIN TRANSACTION;
INSERT INTO "rules" VALUES(1,..);
INSERT INTO "rules" VALUES(2,..);
........
INSERT INTO "rules" VALUES(1000000,..);
COMMIT TRANSACTION;
2. 设置 synchronous 标志:
PRAGMA synchronous = OFF; (放在sql文件的头部)
如果是python,使用事务就很简单了,只要在最后加上 conn.commit() 即可。如果直接在shell下运行,就用begin; 和 commit; 即可。
注意:
1. sqlite3_exec函数如果有返回错误信息,也就是第5个参数返回不为空,那就需要调用sqlite3_free函数去释放第5个参数的指针。
2.sqlite3_mprintf函数拼接完sql语句后也需要调用sqlite3_free函数去释放保存sql语句的空间。
3.sqlite3_column_text函数从数据库中获取字符串字段后,不需要调用sqlite3_free函数去释放保存字符串的空间,这块内存由sqlite3自己释放。
参考:
http://www.sqlite.org/capi3ref.html#sqlite3_exec
http://www.sqlite.org/capi3ref.html#sqlite3_mprintf
http://www.sqlite.org/c3ref/column_blob.html
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!