在java中使用jdbc驱动程序的慢sqlite插入

我刚刚将一百万条记录插入到一​​个包含五列的简单sqlite表中。 使用jdbc驱动程序在java中花了18个小时! 我在python2.5中做了同样的事情,花了不到一分钟。 选择查询的速度似乎很好。 我认为这是jdbc驱动程序的问题。

在java中有没有更快的sqlite3驱动程序?

插入大量行的速度对于我的模式迁移脚本非常重要,如果不需要,我宁愿不必使用外部脚本来执行迁移。

编辑:使用connection.setAutoCommit(false)修复; 感谢Mark Rushakoff向我暗示解决方案:)

您是否自动提交了查询? 这可以解释为什么花了这么长时间。 尝试将它们包装在开始/结束中,这样就不必为每个插入执行完整的提交。

此页面介绍了开始/结束事务,而FAQ则涉及插入/自动提交。

如果要进一步优化,可以考虑将插入查询一起批处理。 因此,您可以将1000万个插入更改为1000个批次的1000个插入。