我有一个用#34; C"写的应用程序。 - debian发行版(使用libmysqlclient)。我的应用程序是在数据库中插入大量行(大约30.000行/秒,行长度~150 B)。插入占用了很多CPU,因为客户端(我的应用程序)必须将二进制流(整数,blob)转换为ASCII表示形式的有效SQL插入语句。此外,MySQL必须将此值转换为二进制表示形式并将其存储到文件中。
我的问题。有没有可能在没有这个对话的情况下调用SQL插入?我一直在使用经典的sprintf(在libc中实现)。现在,我正在使用优化版本和 没有调用sprintf(太多的func调用)。我以为我会使用MySQL编写的声明,但似乎准备好的声明也会转换为'?'变量为ASCII。
扬
答案 0 :(得分:0)
22.8.7.56 mysql_real_query()
int mysql_real_query(MYSQL * mysql,const char * stmt_str,unsigned long length)
显然,下面的内容应该有效
#define DATA "insert into atable (acolumn) values('zero\000quotes\"\'etc ...')"
if (mysql_real_query(db, DATA, sizeof DATA - 1)) /* error */;