Mysqlclient insert into table in bulk
1.h1.cpp
#include <chrono> #include <iostream> #include <mysql/mysql.h> #include <sstream> #include <string.h> #include <uuid/uuid.h> using namespace std; static char *uuidValue = (char *)malloc(40); void mysqlClientDemo(); void mysqlClientInsert2(); void insertBulk3(int loops); char *getUuid() { uuid_t newUUID; uuid_generate(newUUID); uuid_unparse(newUUID, uuidValue); return uuidValue; } int main(int args, char **argv) { insertBulk3(atoi(argv[1])); } void insertBulk3(int loops) { try { MYSQL *conn, mysql; int state; mysql_init(&mysql); conn = mysql_real_connect(&mysql, localhost, root, Root0001!, myDB, 0, 0, 0); if (conn == NULL) { cout << mysql_error(&mysql) << endl; return; } stringstream ss; int64_t num = 0; int repeatedTimes = 1000000; chrono::time_point<chrono::system_clock> startTime; chrono::time_point<chrono::system_clock> endTime; for (int i = 0; i < loops; i++) { startTime = chrono::system_clock::now(); ss = stringstream(); ss << insert into mt(BookId,BookName,BookTitle) values ; for (int j = 0; j < repeatedTimes; j++) { ss << ( << ++num << ,' << getUuid() << ',' << getUuid() << '), << endl; } string str = ss.str(); int lastIndex = str.find_last_of(,); str = str.erase(lastIndex); state = mysql_query(conn, str.c_str()); endTime = chrono::system_clock::now(); if (state != 0) { cout << Num= << num << failed! << endl; return; } cout << Loops= << i + 1 << ,Num= << num << succeeded!,time cost: << chrono::duration_cast<chrono::seconds>(endTime - startTime).count() << seconds, << chrono::duration_cast<chrono::milliseconds>(endTime - startTime).count() << milliseconds, << chrono::duration_cast<chrono::microseconds>(endTime - startTime).count() << microseconds, << chrono::duration_cast<chrono::nanoseconds>(endTime - startTime).count() << nanoseconds!!! << endl << endl; } } catch (const std::exception &e) { std::cerr << e.what() << '\n'; } }
2.Compile
g++ -g -std=c++2a -I. -Wall -I/usr/include/mysql/ *.cpp -o h1 -L/usr/lib -lmysqlclient -luuid;
3.Execute
./h1 100;