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;

cpp lmysqlcppconn insert multiple rows into mysql table via groups and remainder

 

 

in mysql 

select * from b1;

 

cpp lmysqlcppconn insert multiple rows into mysql table via groups and remainder

 

原文链接: https://www.cnblogs.com/Fred1987/p/17020630.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    cpp lmysqlcppconn insert multiple rows into mysql table via groups and remainder

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/309151

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月16日 上午10:53
下一篇 2023年2月16日 上午10:55

相关推荐