MSSQL如何一次存入大量数据(20000条)?vc实现,请给出代码啊!我只会最基本的插入语句……效率太低……

ATMCash4423 2011-05-07 10:45:02
MSSQL如何一次存入大量数据(20000条)?vc实现,请给出代码啊!我只会最基本的插入语句……效率太低……

for(int io=0;io<20000;io++)//38875ms
{
sql.Format("INSERT INTO %s VALUES('%s','%lf')",var[io],time[0],value[0]);
}
...全文
430 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ATMCash4423 2011-05-10
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 lisunlin0 的回复:]
使用prepare statment, 我昨天测试的,在本机上,客户端往服务器端每次插入64K数据,大约6s钟(因为其中包含两个索引,如果没有索引的话,速度应该会更快)。示例代码
[/Quote]
你用的64K数据是多条数据?

我今天用的存储过程,好像没什么变化,插入10000条数据用了11秒多~~是不是存储过程还可以优化?
能不能给我一个优化好的存储过程的代码?
我就要执行10000次的INSERT INTO ' + @varName19 + ' VALUES('+@时间19+','+@值19+')语句!
这个可以优化么?是不是有什么缓存之类的?
「已注销」 2011-05-08
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 hztj2005 的回复:]

我也关心这个问题。
3楼没有说明如何用vc把数据写入SQL文件中。
[/Quote]

就是扩展名是.sql,如何随便就成了。

sunlin7 2011-05-08
  • 打赏
  • 举报
回复
使用prepare statment, 我昨天测试的,在本机上,客户端往服务器端每次插入64K数据,大约6s钟(因为其中包含两个索引,如果没有索引的话,速度应该会更快)。示例代码
hztj2005 2011-05-08
  • 打赏
  • 举报
回复
我也关心这个问题。
3楼没有说明如何用vc把数据写入SQL文件中。
abcdwell 2011-05-08
  • 打赏
  • 举报
回复
膜拜楼上的方法!!
MoXiaoRab 2011-05-08
  • 打赏
  • 举报
回复
把这些语句统统写入到一个SQL文件中,后缀名为.Sql


USE YourDB
SET NOCOUNT ON ;
BEGIN TRY
BEGIN TRANSACTION;

INSERT ...
INSERT ...
INSERT ...
INSERT ...
--把你的语句写进来

COMMIT TRANSACTION;
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION ;
END
END CATCH;

文件写好后,保存。

SQLServer提供了一个osql来执行SQL文件,你可以用WinExec或者CreateProcess调用它来执行sql文件,达到批量的目的。

osql用法在这里
http://support.microsoft.com/kb/325003
补充:http://blog.csdn.net/put2006/archive/2005/09/28/491354.aspx

我们常用的时候记得要用:-U和-P输入用户名和密码
abcdwell 2011-05-08
  • 打赏
  • 举报
回复
把多条数据组成一个字符串,一次插入,

insert into tb(stu_no,stu_name)
select '001','zhangsan'
union all select '002','lisi'
union all select '003','wangwu'
union all ..........


需要注意的是:小心字符串长度超标,比如CString最大可以容纳多少字符,小心别超了!

希望你明白,
ATMCash4423 2011-05-08
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 abcdwell 的回复:]
把多条数据组成一个字符串,一次插入,


SQL code
insert into tb(stu_no,stu_name)
select '001','zhangsan'
union all select '002','lisi'
union all select '003','wangwu'
union all ..........



需要注意的是:小心字符串长度超标……
[/Quote]
我把5000条语句组成了一个数组,速度从22秒提高到了6秒,但是我在网上看的10万条数据4秒就存完了啊!!是不是这个方法还是不行?还有如果把10000条语句组成一个数组的话会提示出错!我用的是char 【500000】啊~10000条再怎么也不能超出50万吧?
「已注销」 2011-05-08
  • 打赏
  • 举报
回复
每一次构造1千条(数值瞎写的不要较真,要是机器允许可以更多)插入语句发给数据库(语句间用“;”隔开)



---很久以前这么做过,也不知道现在成不成,试试吧。

4,012

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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