黑马程序员技术交流社区

标题: 如何批量的向数据库中写数据 [打印本页]

作者: 心灵苦旅    时间: 2014-3-25 21:07
标题: 如何批量的向数据库中写数据
本帖最后由 心灵苦旅 于 2014-3-27 17:05 编辑

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

作者: zou5268237    时间: 2014-3-25 21:32
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();
复制代码

作者: 心灵苦旅    时间: 2014-3-27 17:03
zou5268237 发表于 2014-3-25 21:32
SQLBulkCopy,用于数据库之间大批量的数据传递。通常用于新,旧数据库之间数据的更新。即使表结构完全不同 ...

有用,谢谢了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2