在SQLite中的一个事务中可以完成多少次插入?

Tri*_*cky 12 sqlite transactions

我正在尝试将大量记录(以百万计)插入到SQLite数据库中.从文件流(C++)读入数据.如果我开始一个事务,执行所有插入然后提交事务,我只获得实际插入数据库中的一小部分记录.

插入的内容似乎是随​​机的 - 我无法真正看到任何插入哪些模式以及哪些模式被遗漏.不过,如果我犯再像2000插入后重新开始交易,我没有这个问题,所有的记录被插入,即使这个过程是很多慢.所以...

在一次交易中可以完成多少次插入是否有严格的限制?有没有办法改变这个限制?

ham*_*ene 15

我能够在单个事务中插入1000万行而不会出现问题.

我的猜测:

  • 您在单个语句中插入太多行并达到表达式树的最大深度限制.这可以完全关闭.
  • 您正在使用过长的INSERT而没有绑定值并且达到SQL语句的最大长度限制.在这种情况下,请使用参数绑定.
  • 它可能是库中的错误(您是否检查每个API返回错误代码?)

在SQLite中检查限制.如果您展示如何在代码中准备和执行INSERT,这可能会有所帮助.