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

时间:2011-08-26 02:02:33

标签: sqlite transactions

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

插入的内容似乎是随​​机的 - 我无法真正看到任何插入哪些模式以及哪些模式被遗漏。但是,如果我提交然后在2000插入之后再次开始事务,我没有这个问题并且所有记录都被插入,即使进程 更慢。所以......

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

1 个答案:

答案 0 :(得分:13)

我可以在单个事务中插入10百万行而不会出现问题。

我的猜测:

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

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