批量插入数据库数据

xiaojin093 2015-03-06 11:24:56
为了提高大量入库效率,使用了事务,代码如下
try
{
pDBConn = OpenDBConn();
pDBConn->BeginTransaction();
CADORecordset DataRecord( pDBConn );
DataRecord.Open(_T("ReceInfo"), adCmdTable, adLockOptimistic);
for (vector< UpData* >::iterator it = v_realdata.begin(); it != v_realdata.end(); it++)
{
UpData* pupdata = *it;
DataRecord.AddNew();
fillRealVal(DataRecord, pupdata); //用记录集对象填充字段值
}
DataRecord.Update();
pDBConn->CommitTransaction();
//DataRecord.UpdateBatch();
}
catch (...)
{
pDBConn->RollbackTransaction();
return false;
}

上述代码 DataRecord.Open(_T("ReceInfo"), adCmdTable, adLockOptimistic);会卡很久,请问批量入库时open的参数该如何设置,如果使用了UpdateBatch是不是可以替代CommitTransaction,BeginTransaction,怎样才能做到效率最高?求指导
...全文
252 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
yooq_csdn 2015-03-09
  • 打赏
  • 举报
回复
引用 4 楼 xiaojin093 的回复:
c++可以用SqlBulkCopy和Table DataType吗?
bulk insert 是 sql语言,和insert 一样。另外,你可以试试再多几行拼接,比如500或1000
xiaojin093 2015-03-09
  • 打赏
  • 举报
回复
c++可以用SqlBulkCopy和Table DataType吗?
xiaojin093 2015-03-09
  • 打赏
  • 举报
回复
bulk insert感觉比较适合在忙时把数据缓存,闲时入库的情况,如果数据量比较均匀,是不是不适合用这个,如果入库来不及,缓存越来越多,累积下来一样是个问题 测试了拼接500条,时间是20多秒,速度没有改善
Allen_Z 2015-03-07
  • 打赏
  • 举报
回复
用SqlBulkCopy,或者用Table DataType 试一试
xiaojin093 2015-03-06
  • 打赏
  • 举报
回复
测试过一条执行Execute大概是1ms,合并10条成一个sql语句来Execute,大概是200多ms,好像并没有快,和网上查到的不一样,对于一秒要入库10000的情况,该用什么样的方式才是最快的?求有经验的指导
卖水果的net 2015-03-06
  • 打赏
  • 举报
回复
使用动态 SQL,一次拼接出多个 insert 语句,要快好多。

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧