cpp lmysqlcppconn insert multiple rows into mysql table via groups and remainder
//model/util.h #pragma once #ifndef __util_h__ #define __util_h__ #include <chrono> #include <ctime> #include <fstream> #include <iomanip> #include <iostream> #include <mysql/mysql.h> #include <random> #include <sstream> #include <string.h> #include <thread> #include <unistd.h> #include <uuid/uuid.h> #include <vector> #include <jsoncpp/json/json.h> #include <cppconn/driver.h> #include <cppconn/connection.h> #include <cppconn/statement.h> #include <cppconn/resultset.h> #include <cppconn/exception.h> #include <cppconn/resultset_metadata.h> using namespace std; class util { public: string get_time(); string get_uuid(); void insert_into_mysql_table(int len); }; #endif //model/util.cpp #include "model/util.h" string util::get_time() { chrono::time_point<chrono::high_resolution_clock> now = chrono::high_resolution_clock::now(); chrono::milliseconds mills = chrono::duration_cast<chrono::milliseconds>(now.time_since_epoch()); chrono::seconds seconds = chrono::duration_cast<chrono::seconds>(now.time_since_epoch()); uint64_t millsValue = mills.count() - seconds.count() * 1000; time_t rawTime = chrono::high_resolution_clock::to_time_t(now); struct tm tmInfo = *std::localtime(&rawTime); stringstream ss; ss << std::put_time(&tmInfo, "%Y%m%d%H%M%S") << std::setfill('0') << std::setw(3) << millsValue; string dtvalue = ss.str(); ss = stringstream(std::string()); return dtvalue; } string util::get_uuid() { uuid_t newuuid; uuid_generate(newuuid); char *uuidvalue = (char *)malloc(40); uuid_unparse(newuuid, uuidvalue); string uuidStr(uuidvalue); free(uuidvalue); uuidvalue = nullptr; return uuidStr; } void util::insert_into_mysql_table(int len) { try { sql::Driver *driver; sql::Connection *conn; sql::Statement *stmt; driver = get_driver_instance(); conn = driver->connect("tcp://127.0.0.1:3306", "username", "password"); conn->setSchema("db"); stmt = conn->createStatement(); int loops = len / 100000; int remainder = len % 100000; stringstream ss; string presql = "insert into b1(id,author,comment,content,name,title,topic) values "; uint64_t num = 1; if (loops > 0) { for (int loop = 0; loop < loops; loop++) { ss = stringstream(); ss << "insert into b1(id,author,comment,content,name,title,topic) values "; for (int i = 0; i < 100000; i++) { ss << "('" << static_cast<uint64_t>(num * num++) << "','" << get_uuid() << "','" << get_uuid() << "','" << get_uuid() << "','" << get_uuid() << "','" << get_uuid() << "','" << get_uuid() << "'),"; } string insertsql = ss.str(); size_t lastcomma = insertsql.find_last_of(","); if (lastcomma != string::npos) { insertsql = insertsql.substr(0, lastcomma); log_file_msg(get_time().append(".txt"),insertsql); bool inserted = stmt->execute(insertsql); cout << "inserted =" << inserted << ",num =" << num << endl; } } } if (remainder > 0) { ss = stringstream(); ss << presql; num = loops * 100000; for (int i = 0; i < remainder; i++) { ss << "(" << static_cast<uint64_t>(num * num++) << ",'" << get_uuid() << "','" << get_uuid() << "','" << get_uuid() << "','" << get_uuid() << "','" << get_uuid() << "','" << get_uuid() << "'),"; } string insertsql = ss.str(); size_t lastcomma = insertsql.find_last_of(","); if (lastcomma != string::npos) { insertsql = insertsql.substr(0, lastcomma); log_file_msg(get_time().append(".txt"),insertsql); bool inserted = stmt->execute(insertsql); cout << "inserted =" << inserted << ",num =" << num << endl; ss = stringstream(); } } cout << get_time() << ",finished in " << __FUNCTION__ << "," << __LINE__ << endl; } catch (const sql::SQLException &e) { std::cerr << e.what() << '\n'; cout << e.getErrorCode() << "," << e.getSQLState() << endl; } } //main.cpp #include "model/util.h" void mysql_insertinto_table_demo(int len) { util ul; ul.insert_into_mysql_table(len); } //g++ -g -std=c++2a -I. *.cpp ./model/*.cpp -o h1 -luuid -lpthread -lmysqlcppconn -ljsoncpp int main(int args,char **argv) { // mt_le_demo(atoi(argv[1]),atoi(argv[2]),atoi(argv[3]),argv[4]); // populate_print_vector_book(atoi(argv[1])); mysql_insertinto_table_demo(atoi(argv[1])); }
Compile
g++ -g -std=c++2a -I. *.cpp ./model/*.cpp -o h1 -luuid -lpthread -lmysqlcppconn -ljsoncpp
Run
./h1 10054708;
in mysql
select * from b1;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
2019-01-02 C#,NPOI,Export Generic T Data