我下载最新的connector C++ 1.1.6 貌似 库里还没有批量插入数据的接口 不像JDBC 有addbatch() 这个接口
请问我在C++ 下 要大量数据批量导入到数据库里要怎么操作 ,我的情况是程序在运行中会产生大量数据要插入到数据库里
所以我使用批量导入来提升效率。
请问我在C++ 下 要大量数据批量导入到数据库里要怎么操作 ,我的情况是程序在运行中会产生大量数据要插入到数据库里
所以我使用批量导入来提升效率。
解决方案 »
- mysql中像这样的复杂的语句该如何优化?
- 请问mysql 怎样将一列的内容变为行的报表?
- PostgreSQL 与 MySQL 性能大测试(第二节)
- 求高效的SQL语句
- 为什么count(*)就是统计记录数呢?
- Date时间类型的查询结果值总是“0000:00:00”,请问有没有办法让查询值显示为空
- mySQL的表出现损坏,有没有办法修复?请大侠们多多指教。分可以再加。
- 请问我这个存储过程会自动回滚吗?还有怎么捕捉错误信息呢?
- 如何拦截指定网站信息并在本地修改
- 关于一对多表关联查询,父表数据出现重复现象该怎么解决?
- mysql 单表数据30万列表页显示很慢,难道是服务器mysql配置问题?还是我的sql查询语句问题,还是MYSQL对几十万的数据处理本身就慢
- 关于 INFORMATION_SCHEMA.COLUMNS的问题
通常来说C++操作MySQL的时候,往Mysql中插入10000条简单数据,速度非常缓慢,居然要5分钟左右,
而打开事务的话,一秒不到就搞定了!
具体实现代码如下:
#include <iostream>
#include <winsock2.h>
#include <string>
#include "mysql.h"
#pragma comment(lib, "libmysql.lib");
using namespace std;
int main()
{
MYSQL mysql;
mysql_init(&mysql); // 初始化
MYSQL *ConnStatus = mysql_real_connect(&mysql,"localhost","root","","sky",3306,0,0);
if (ConnStatus == NULL)
{
// 连接失败
int i = mysql_errno(&mysql);
string strError= mysql_error(&mysql);
cout <<"Error info: "<<strError<<endl;
return 0;
}
cout<<"Mysql Connected..."<<endl;
string strsql;
MYSQL_RES *result=NULL; // 数据结果集
// 插入操作
strsql = "insert into t1 values(2,'lyb')";
mysql_query(&mysql,"START TRANSACTION"); // 开启事务, 如果没有开启事务,那么效率会变得非常低下!
for (int i=0; i<10000; i++)
{
mysql_query(&mysql,strsql.c_str());
}
mysql_query(&mysql,"COMMIT"); // 提交事务
cout<<"insert end"<<endl;
//释放结果集 关闭数据库
mysql_free_result(result);
mysql_close(&mysql);
mysql_library_end();
return 0;
}