当前位置: 代码迷 >> Sql Server >> 批量插入数据库数据,该如何解决
  详细解决方案

批量插入数据库数据,该如何解决

热度:19   发布时间:2016-04-24 09:14:05.0
批量插入数据库数据
为了提高大量入库效率,使用了事务,代码如下
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,怎样才能做到效率最高?求指导
------解决思路----------------------
使用动态 SQL,一次拼接出多个 insert 语句,要快好多。
------解决思路----------------------
用SqlBulkCopy,或者用Table DataType 试一试
------解决思路----------------------
引用:
c++可以用SqlBulkCopy和Table DataType吗?


bulk insert 是 sql语言,和insert 一样。另外,你可以试试再多几行拼接,比如500或1000
  相关解决方案