使用C API有效地创建非常大的mysql INSERT查询

时间:2013-06-10 03:57:35

标签: mysql c api insert

我在文件中获取数据,我需要将其写入数据库。我尝试过NoSQL解决方案,这会导致极高的内存使用率。现在我正在尝试使用C API在MySQL中使用相同的东西。

需要写入MySQL数据库的数据是120多万条记录。基本上我完成了所有工作,但我认为我创建SQL语句的方式有点慢。

以下是我使用的代码:

sprintf(queryData, "INSERT INTO table(column1, column2, column3) VALUE");
for (i = 0; i < records; i++){
    sprintf(queryTemp, "(%s,%f,%f)", stringValue, floatValue1, floatValue2);
    strcat(queryData, queryTemp);
}

还有一些代码在不同的记录之间添加了“,”。

有没有比使用字符串操作更快的创建MySQL查询的方法?

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

由于您的数据位于文件中,因此您可能需要考虑使用LOAD DATA INFILE而不是INSERT语句。

  

LOAD DATA INFILE
  LOAD DATA INFILE语句以非常高的速度将文本文件中的行读入表中。

     

Speed of INSERT Statements
  从文本文件加载表时,请使用LOAD DATA INFILE。这是   通常比使用INSERT语句快20倍。见章节   13.2.6,“LOAD DATA INFILE语法”。
  ...
  加载数据的INSERT仍然比LOAD DATA INFILE 慢得多,即使使用刚刚概述的策略也是如此。