9 个解决方案
#1
upup
#2
如果是从某些库或者文件里面倒的话,你可以采用SQLServer DTS,或者BCP进行倒入。
如果你是由程序计算产生数据的话,建议你将目标表中的索引和主键先通通删掉,倒完后再建。如果是计算得到的,建议你在存储过程中计算,然后往表里放。
如果你是由程序计算产生数据的话,建议你将目标表中的索引和主键先通通删掉,倒完后再建。如果是计算得到的,建议你在存储过程中计算,然后往表里放。
#3
把你的SQL帖出来,要不不好给你分析,其实原因是挺多的,插入这么多是有点慢。
但不至于你插入16万条就这么慢,可能你的SQL没有优化吗?
我在这方有一点经验,
处理过8、9百万的记录。
但不至于你插入16万条就这么慢,可能你的SQL没有优化吗?
我在这方有一点经验,
处理过8、9百万的记录。
#4
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是外层循环
大家帮助小弟
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是外层循环
大家帮助小弟
#5
to:swordmanli我在导入前表是空的,没有你说的索引什么。由于文件的格式我在用dts时候导入的不理想,所以用程序实现。我的程序是读取文件中的5000条记录保存到数组中,然后循环插入
#6
这样啊,建议你仍然用DTS倒入到SQLServer中,然后你再用一个存储过程来处理,然后放到目标表,这样肯定比你现在要快很多。
当然,为了更加有效,存储过程也可以分成几次,比如每一次倒入50万条。
当然,为了更加有效,存储过程也可以分成几次,比如每一次倒入50万条。
#7
用BCP吧,速度特别快
#8
将要插入的数据写入文本文件中,然后将数据库恢复模型设置为simple(目的是bcp导入时不写日志),然后再用bcp/bulk insert导入
这样的速度肯定快很多.
这样的速度肯定快很多.
#9
1、数据库恢复模型设置为simple
2、先去掉表上的索引
会好些
2、先去掉表上的索引
会好些
#1
upup
#2
如果是从某些库或者文件里面倒的话,你可以采用SQLServer DTS,或者BCP进行倒入。
如果你是由程序计算产生数据的话,建议你将目标表中的索引和主键先通通删掉,倒完后再建。如果是计算得到的,建议你在存储过程中计算,然后往表里放。
如果你是由程序计算产生数据的话,建议你将目标表中的索引和主键先通通删掉,倒完后再建。如果是计算得到的,建议你在存储过程中计算,然后往表里放。
#3
把你的SQL帖出来,要不不好给你分析,其实原因是挺多的,插入这么多是有点慢。
但不至于你插入16万条就这么慢,可能你的SQL没有优化吗?
我在这方有一点经验,
处理过8、9百万的记录。
但不至于你插入16万条就这么慢,可能你的SQL没有优化吗?
我在这方有一点经验,
处理过8、9百万的记录。
#4
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是外层循环
大家帮助小弟
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是外层循环
大家帮助小弟
#5
to:swordmanli我在导入前表是空的,没有你说的索引什么。由于文件的格式我在用dts时候导入的不理想,所以用程序实现。我的程序是读取文件中的5000条记录保存到数组中,然后循环插入
#6
这样啊,建议你仍然用DTS倒入到SQLServer中,然后你再用一个存储过程来处理,然后放到目标表,这样肯定比你现在要快很多。
当然,为了更加有效,存储过程也可以分成几次,比如每一次倒入50万条。
当然,为了更加有效,存储过程也可以分成几次,比如每一次倒入50万条。
#7
用BCP吧,速度特别快
#8
将要插入的数据写入文本文件中,然后将数据库恢复模型设置为simple(目的是bcp导入时不写日志),然后再用bcp/bulk insert导入
这样的速度肯定快很多.
这样的速度肯定快很多.
#9
1、数据库恢复模型设置为simple
2、先去掉表上的索引
会好些
2、先去掉表上的索引
会好些