如果是从某些库或者文件里面倒的话,你可以采用SQLServer DTS,或者BCP进行倒入。如果你是由程序计算产生数据的话,建议你将目标表中的索引和主键先通通删掉,倒完后再建。如果是计算得到的,建议你在存储过程中计算,然后往表里放。

解决方案 »

  1.   

    把你的SQL帖出来,要不不好给你分析,其实原因是挺多的,插入这么多是有点慢。
    但不至于你插入16万条就这么慢,可能你的SQL没有优化吗?
       我在这方有一点经验,
        处理过8、9百万的记录。
      

  2.   

    strSQL.Format("insert into weather(id,Pressure,Temperature,Windu,Windv,sgidu,Cloudy,Rain,Height,EveryTime) 
    values(%d,%f,%f,%f,%f,%f,%f,%f,%f,%d)", m_nRecordNums, pData->pPressure[i][j], pData->pTemperature[i][j],pData->pWindu[i][j], pData->pWindv[i][j], pData->psgidu[i][j], pData->pCloudy[i][j],pData->pRain[i][j], pData->nHeight, pData->nTime);m_pRecd->Open((_variant_t)strSQL, (IDispatch*)m_pConn, adOpenDynamic,adLockOptimistic, adCmdText);我觉得是有点慢
    i,j是外层循环
    大家帮助小弟
      

  3.   

    to:swordmanli我在导入前表是空的,没有你说的索引什么。由于文件的格式我在用dts时候导入的不理想,所以用程序实现。我的程序是读取文件中的5000条记录保存到数组中,然后循环插入
      

  4.   

    这样啊,建议你仍然用DTS倒入到SQLServer中,然后你再用一个存储过程来处理,然后放到目标表,这样肯定比你现在要快很多。当然,为了更加有效,存储过程也可以分成几次,比如每一次倒入50万条。
      

  5.   

    将要插入的数据写入文本文件中,然后将数据库恢复模型设置为simple(目的是bcp导入时不写日志),然后再用bcp/bulk insert导入这样的速度肯定快很多.
      

  6.   

    1、数据库恢复模型设置为simple
    2、先去掉表上的索引
    会好些