sqlite插入大量数据操作

sqlite没有显示定义事务时,每条语句执行的时候,都会隐形的创建一个事务,保证数据库操作的原子性,这时如果进行大量的操作比如:插入,则速度非常缓慢

可自定义事务的BEGIN与COMMIT,一次性提交所有的插入操作:

sqlite3.run('BEGIN TRANSACTION');
let stmt = sqlite3.prepare('INSERT INTO table (field1, field2) VALUES (?, ?)');
for(let i = 0; i < length; i++) {
  stmt.run([value1, value2]) ; 
}
stmt.finalize();
sqlite3.run('COMMIT TRANSACTION');

  

保证与数据库最少的交互

另外遇到问题:当一个事务TRANSACTION执行时,不允许创建另一TRANSACTION,也就是不能并发创建,待解决

posted @ 2019-05-23 18:07  Mr_Kahn  阅读(540)  评论(0)    收藏  举报