现在的位置: 首页 > 综合 > 正文

SqlBulkCopy高效写入数据库Demo

2013年07月16日 ⁄ 综合 ⁄ 共 1013字 ⁄ 字号 评论关闭

相信进行过大量数据写入数据库操作的朋友对SqlBulkCopy都很熟悉,我也是碰巧在微软MSDN文档上看到了这个方法。那会儿刚进公司,有一个运维的项目要做,因为考虑到是公司用,数据量一定不会小,如果用先if判断,完了insert into到数据库,一两百条的话还好,如果是上万条的话,那页面非超时不可,所以果断得来个给力的方法,写入数据库。哎呀,好像一上来,说了很多废话,来正经的——————

 

代码

1 /// <summary>
2 /// 利用SqlBulkCopy实现从excel到sql表的数据导入
3 /// </summary>
4 /// <param name="tableName">数据源</param>
5 /// <param name="destinTable">目的表</param>
6 public void SqlBulkCopyInsert(DataTable tableName, string destinTable, SqlConnection conn, bool flag)
7 {
8   SqlBulkCopy sbc = new SqlBulkCopy(conn);
9     
10   if (conn.State == ConnectionState.Closed)
11   {
12     conn.Open();
13   }
14   sbc.DestinationTableName = destinTable; //获取要导入的目的数据表
15   try
16   {
17     sbc.WriteToServer(tableName); //执行写入操作
18   }
19   catch (Exception ex)
20   {
21     Console.WriteLine(ex.Message);
22   }
23   finally
24   {
25     sbc.Close();
26     if (flag)
27     {
28       conn.Close();
29     }
30   }
31 }

其实代码很简单,最犀利的一句就是WriteToServer(tableName)。这个不解释啊,10000...记得是一百万条数据写入库中只要4秒多。。。要注意的就是待写入的数据集的字段格式要和数据库中的目的数据表的字段格式相同,说了半天就是表的框架和内容要完全一样,才可以写入。。。写入那叫一个快,一个哦~缺点是写入前的数据判断和过滤,逼近省事就意为着费功。就说到这里,嘿嘿。。。

 

 

抱歉!评论已关闭.