Windows每秒钟10000条以上插入;Linux每秒插入300条以上。Q269752451

输出截图:

Linux输出:

Windows输出:

有须要的联系 QQ 3508551694

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

測试代码

main.cpp

int main(int, char *[])
{
vector<e_eledata> arr_data;
print("begin make_data"); make_data(arr_data);
print("begin insert 3000 data"); try
{
Otlv4_Handle otl_handler;
otl_handler.logon("root/123456@mysql_from_centos");
otl_handler.insert(e_eledata::insert_sql(),arr_data);
print("insert data end "); arr_data.clear();
otl_handler.select(e_eledata::select_sql(),arr_data);
print("select top 10:");
for (int i=0;i<arr_data.size();++i)
{
cout<<arr_data[i].to_string()<<endl;
}
}
catch(otl_exception& ex)
{
cout<<"exception:\n"
<<"msg:"<<ex.msg<<"\n"
<<"text:"<<ex.stm_text<<"\n"
<<"info:"<<ex.var_info<<"\n";
} return 0;
};

使用:

Windows下:直接打开project编译执行(填写一下username、password、ODBC数据源名称就可以)
Linux下:直接make。执行(填写一下username、password、ODBC数据源名称就可以)

版本号2.0简单封装OTL

头文件Otlv4_Handle.h

#ifndef OTLV4_HANDLE_H
#define OTLV4_HANDLE_H
// =================================================================================
// ORACLE, ODBC and DB2/CLI Template Library, Version 4.0.262,
// Copyright (C) 1996-2012, Sergei Kuchin (skuchin@gmail.com)
// modified by carea @ 2014-10-29 Version 1.0
// ================================================================================= /************************************************************************/
/* */
/* 邦定变量类型 | C++ 程序使用的相应类型 */
/* USED IN MySQL table | USED IN C++ STRUCT MEMBER TYPE */
/* int | long long */
/* timestamp | otl_datetime */
/* varchar | std::string */
/* bigint | long long */
/* decimal | double */
/* */
/************************************************************************/ //数据类型应该支持的输入输出操作
//otl_stream& operator>>(otl_stream& in ,T& t)
//otl_stream& operator<<(otl_stream& out ,const T& t) /*********************************************************************************/
/* */
/* 经常使用SQL语句写法 */
/*otl_handle.select("select f2 from test_tab",arr); */
/*otl_handle.insert("insert into test_tab1(f2)values(:f2<char[30]> )",arr); */
/* */
/*说明:数据库表中假设有属性名为:IP、PORT、INTERVAL这样的字段,赶紧改名! !(与keyword冲突) */
/* */
/*********************************************************************************/ #ifdef OTLV4_HANDLE_WINDOWS
#define OTL_ODBC_MSSQL_2008
#define OTL_ODBC_SELECT_STM_EXECUTE_BEFORE_DESCRIBE
#define OTL_STL//using std::string
#define OTL_ANSI_CPP // Turn on ANSI C++ typecasts
#define OTL_BIGINT long long
#define OTL_STR_TO_BIGINT(str,n) { n=_atoi64(str); }
#define OTL_BIGINT_TO_STR(n,str) { _i64toa(n,str,10); }
#define INSERT_NUM 10000
#endif #ifdef OTLV4_HANDLE_LINUX
#define OTL_ODBC_UNIX
#define OTL_ODBC_SELECT_STM_EXECUTE_BEFORE_DESCRIBE
//#define OTL_ODBC_MYSQL
#define OTL_STL//using std::string
#define OTL_ANSI_CPP // Turn on ANSI C++ typecasts
#define OTL_BIGINT long long
#define OTL_STR_TO_BIGINT(str,n) { n=atoll(str); }
#define OTL_BIGINT_TO_STR(n,str) { sprintf(str,"%lld", n);}
#define INSERT_NUM 1
#endif #include "otlv4.h"// include the OTL 4.0 header file #include <string>
#include <algorithm>
#include <vector>
#include <iterator>
using namespace std; #ifndef SCP_EXPORT_H
#include "SCP_Export.h"
#endif class SCP_Export Otlv4_Handle
{
public:
Otlv4_Handle();
bool logon(const string& db_info);
bool reconnect_to_db_once(void);
~Otlv4_Handle(void);
template<typename T> int insert(const string& sql,const vector<T>& data);
template<typename T> int select(const string& sql,vector<T>& data);
int count_table_field(const string& table_name,const string& field_name);
private:
otl_connect db; // connect object
string db_infor_;
}; template<typename T> int Otlv4_Handle::insert(const string& sql,const vector<T>& data)
{
db.auto_commit_off();
otl_stream out;
out.open(INSERT_NUM, //buffer size should be == 1 always on INSERT on Linux MySQL.
//buffer size can be bigger than 2000 on Windows MySQL.
sql.c_str(),
db); // connectobject
//submit
for (size_t i = 0 ; i < data.size(); i++)
{
out<<data[i];
}
out.flush();
db.commit(); return 0;
} template<typename T> int Otlv4_Handle::select(const string& sql,vector<T>& data)
{
//使用邦定变量类型
//sql = "select* from "+talbe;
db.auto_commit_off();
otl_stream in;
in.open(100, //buffer size
sql.c_str(),// SELECTstatement
db // connectobject
); // copy all rows to be fetched into the vector
copy(otl_input_iterator<T,ptrdiff_t>(in),otl_input_iterator<T,ptrdiff_t>(),back_inserter(data)); return 0;
} #endif

存储数据类定义

存储数据类头文件e_eledata.h

#ifndef E_ELEDATA_H
#define E_ELEDATA_H #include <iostream>
#include <fstream>
#include <sstream>
#include <string>
using namespace std; #ifndef SCP_TYPE_H
#include "scp_type.h"
#endif #ifndef SCP_EXPORT_H
#include "SCP_Export.h"
#endif #ifndef OTLV4_HANDLE_H
#include "Otlv4_Handle.h"
#endif class SCP_Export e_eledata
{
public:
friend SCP_Export otl_stream& operator<<(otl_stream& out , const e_eledata& eledata);
friend SCP_Export otl_stream& operator>>(otl_stream& in , e_eledata& eledata);
string to_string(void) const;
e_eledata();
~e_eledata();
e_eledata(const e_eledata& data);
e_eledata& operator=(const e_eledata& data);
int check_format(void);
static string insert_sql(void);
static string select_sql(void);
public:
id_type id;//64位机器这里不须要使用long,假设使用long则字节太长而打印不出来
id_type e_elemeterhead_id;
otl_datetime dldt;
double tae; //总有功电量。单位:kWh。 }; #endif

批量提交

因不同的数据库以及不同的操作系统,批量提交的buffer size有所不同,见官方演示样例代码:
Windows MySQL 能够设置大于10000
Linux MySQL 临时设置成1.


配置ODBC数据源

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

C++ OTL MySQL(Windows/Linux) V8.1的更多相关文章

  1. Matlab命令——目录操作(windows&Linux)

    Matlab命令——目录操作(windows&Linux) 1. filesep用于返回当前平台的目录分隔符,Windows是反斜杠(\),Linux是斜杠(/).有时此命令结合ispc命令使 ...

  2. 视频处理工具FFmpeg的安装(windows/Linux)

    ♣FFmpeg是什么? ♣FFmpeg组成 ♣下载工具 ♣安装FFmpeg ♣应用到j2ee项目 前言:学习视频编码,一定要知道雷霄骅(leixiaohua1020)的专栏 ,伟大的程序员,26岁去世 ...

  3. java环境变量配置(Windows & Linux)

    前言: java 编程中 java 环境变量设置是开发最基础的要求,今天我们一起来学习相关要点和配置. 做些不太恰当但通俗易懂的比喻(个人理解): java 程序就好比汽车. jre(java 运行环 ...

  4. 『深度应用』一小时教你上手MaskRCNN·Keras开源实战(Windows&Linux)

    0. 前言介绍 开源地址:https://github.com/matterport/Mask_RCNN 个人主页:http://www.yansongsong.cn/ MaskRCNN是何凯明基于以 ...

  5. 【移动自动化】【一】环境依赖:android sdk 环境配置(windows + linux)

    Android自动化前提依赖 android sdk 模拟器: mumu模拟器, 逍遥模拟器 真机 windows 环境下Android SDK 配置 配置java环境 去官网下载jdk http:/ ...

  6. python2.7中使用mysql (windows XP)

    一.首先下载mysql—python模块,下载完毕之后会有一个MySQL-python-1.2.3.win32-py2.7.exe文件,点击安装一路next,ok. 二.编辑配置文件(setting. ...

  7. 常用软件的安装(windows/linux)

    1. matlab 2016b (两个 iso 文件)(windows) MATLAB R2016b 安装教程 2. clion 在 ubuntu 下的安装 ubuntu 14.04 Clion201 ...

  8. MySQL重置root密码的几种方法(windows+Linux)

    重置root密码的方法: windows系统下:1.停止mysql服务:2.新建文件init-root.txt,写上如下内容: update mysql.user set password = pas ...

  9. PHP中获取内网用户MAC地址(WINDOWS/linux)的实现代码

    做一个内网根据MAC地址自动登录的应用,在WINDOW 2003可以正常使用,函数如下   复制代码 代码如下: function ce_getmac() { if(PHP_OS == 'WINNT' ...

随机推荐

  1. Apache负载均衡与Tomcat集群配置学习(Windows环境)

    本文主要参考自http://www.iteye.com/topic/985404?dhcc,经由实际操作配置操并记录而成. 由于最近的一个Java开发项目用到了Tomcat中间件作为web服务器,刚开 ...

  2. Android Camera解析(上) 调用系统相机拍摄照片

    开发中我们常须要通过相机获取照片(拍照上传等).一般通过调用系统提供的相机应用就可以满足需求:有一些复杂需求还须要我们自己定义相机相关属性,下篇我们会涉及到. 首先我们来研究怎样简单调用系统相机应用来 ...

  3. Server Tomcat v8.0 Server at localhost was unable to start within 45 seconds. If the server requires

    Server Tomcat v8.0 Server at localhost was unable to start within 45 seconds. If the server requires ...

  4. LeetCode——Valid Parentheses

    Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the inpu ...

  5. 婚礼上的谎言(C++实现)

    #include<iostream> using namespace std; void main(void) { int a,b,c; char DD,EE,FF; for (a=1;a ...

  6. 使用Handler在子线程中更新UI

    Android规定仅仅能在主线程中更新UI.假设在子线程中更新UI 的话会提演示样例如以下错误:Only the original thread that created a view hierach ...

  7. asp.net website 单独编译某个页面,连带编译app_code

    选中某一个页面,然后右键build page

  8. 英语发音规则---V字母

    英语发音规则---V字母 一.总结 一句话总结: 1.V发[v]? voice [vɒɪs] n. 声音 love [lʌv] n. 恋爱 leave [liːv] vt. 离开 very ['ver ...

  9. 最大似然估计的缺陷 —— 方差和均值的 bias

    0. 均匀分布期望的最大似然估计 首先我们来看,如何通过最大似然估计的形式估计均匀分布的期望.均匀分布的概率密度函数为:f(x|θ)=1θ,0≤x≤θ.不失一般性地,将 x1,x2,-,xn 排序为顺 ...

  10. Java环境安装配置好了却不能运行xxx.jar程序?

    1,检查Java环境是否已安装或配置成功. WIN+R → cmd → java -version,查看是否可以读取到Java版本信息,如果读取不到,说明Java环境安装或配置有问题,重新装一下. 2 ...