批量SQL插入

时间:2011-08-27 20:32:05

标签: sql sqlite text batch-file

我有一个包含50k + - 行的文本文件,每行包含必须作为单独字段从每行中拉出的数据。

该计划每天运行几次。

由于这个应用程序是可移植的,我使用SQLIite并逐个读取每条50k行,收集所需数据并插入SQlite DB文件。

我做了一些测试,发现仅通过行读取只需要花费10%的实际时间,当我在SQLite数据库中逐个插入所有数据时,所有开销都来了。

寻找改进建议。

2 个答案:

答案 0 :(得分:3)

您可以使用事务提高性能,以便一次请求多个INSERT,而不是文本文件中每一行的一个INSERT。这将允许您批处理INSERT语句(尝试每批100个) - 这将显着提高性能。

答案 1 :(得分:1)

您可以通过以下方式提高速度:

  1. 在事务中执行INSERT。根据数据量,最好分批进行,例如。 1000条陈述。
  2. 使用预准备语句,以便最小化解析查询的开销。
  3. 如果您在目标表中有索引,有时最好创建一个与目标表结构相同的TEMPORARY表,用所有数据填充它,然后在最后发出INSERT INTO target_table SELECT * FROM temporary_table