我在文件中获取数据,我需要将其写入数据库。我尝试过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查询的方法?
感谢任何帮助。
答案 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 慢得多,即使使用刚刚概述的策略也是如此。