A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 心灵苦旅 中级黑马   /  2014-3-25 21:07  /  805 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 心灵苦旅 于 2014-3-27 17:05 编辑

当需要向数据库中插入大量数据时,比如几十万条,如果一条一条地插入的话,非常慢,一般会用掉几分钟。
有没有直接想数据库中批量插入数据的方法,依次提高插入数据的效率呢?

2 个回复

倒序浏览
SQLBulkCopy,用于数据库之间大批量的数据传递。通常用于新,旧数据库之间数据的更新。即使表结构完全不同,也可以通过字段间的对应关系,顺利的将数据导过来。
  1.                 SqlConnection conn = new SqlConnection(Connstring);
  2.                 conn.Open();
  3.                 using (SqlBulkCopy sqlBC = new SqlBulkCopy(conn))
  4.                 {
  5.                     //设置一个批,写入多少条记录        
  6.                     sqlBC.BatchSize = 100000;        
  7.                     //设置逾时的秒数        
  8.                     sqlBC.BulkCopyTimeout = 60;         
  9.                     //设置 NotifyAfter 属性,以便在每拷贝 10000 条记录至数据表后,呼叫事件处理函数        
  10.                     sqlBC.NotifyAfter = 10000;
  11.                     //sqlBC.SqlRowsCopied += new SqlRowsCopiedEventHandler(OnSqlRowsCopied);
  12.                     sqlBC.DestinationTableName = "dbo.A_Test";
  13.                     //对应数据行        
  14.                     sqlBC.ColumnMappings.Add("ABC", "ABC");
  15.                     sqlBC.ColumnMappings.Add("EFG", "EFG");
  16.                     sqlBC.ColumnMappings.Add("TEST", "TEST");
  17.                     //开始写入        
  18.                     sqlBC.WriteToServer(db);
  19.                 }
  20.                 conn.Dispose();
复制代码
回复 使用道具 举报
zou5268237 发表于 2014-3-25 21:32
SQLBulkCopy,用于数据库之间大批量的数据传递。通常用于新,旧数据库之间数据的更新。即使表结构完全不同 ...

有用,谢谢了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马