【问题标题】:What is the optimized way to insert large number of records (more than 40,000) in sqlite3在 sqlite3 中插入​​大量记录(超过 40,000 条)的优化方法是什么
【发布时间】:2011-04-08 18:50:21
【问题描述】:

我正在尝试一次性将超过 40,000 条记录插入 sqlite3。

在最短的时间内插入它们的最佳方法是什么。

我在 Java 中使用过准备好的语句,并且知道与原始 sql 查询相比,预编译的 sql 语句更快。我无法使用 python 在 sqlite3 中使用准备好的语句找到插入记录的代码 sn-p。任何指向这个方向的指针将不胜感激。

我什至对准备好的陈述的任何其他替代方案持开放态度。

谢谢。

【问题讨论】:

  • 我会对使用 executemany 而不是纯脚本方式的速度有多快感兴趣。当然,这还不包括脚本方式的最终 sql 注入(executemany 更安全)。
  • 之前使用 executescript,40,000 条记录的时间为 8.3 分钟,而使用 executemany 则缩短到 2.1 秒。具有 128MB RAM 和 1 GHz 处理器的嵌入式设备的性能惊人!可能这就是你感兴趣的:-)
  • 谢谢,这正是我要找的

标签: python sqlite


【解决方案1】:

您应该将executemany 与适当的迭代器一起使用

【讨论】:

  • 我使用了一个中间函数,它在执行它之前计算插入查询。所以我正在做的是连接这些计算的插入查询并当前使用 cursor.executescript(..) 执行它我不知道在这种情况下我该如何使用 executemany() 吗?
  • 最简单的方法是将您的值附加到一个迭代器列表中 cur.executemany("insert into characters(c,b) values (?,?)", [("c1","b1"),("c2","b2")]) 它不是内存效率,但应该涵盖您的用例
猜你喜欢
  • 2012-09-24
  • 2012-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-19
  • 1970-01-01
  • 1970-01-01
  • 2011-06-03
相关资源
最近更新 更多