zoukankan      html  css  js  c++  java
  • C#:用SqlBulkCopy来实现批量插入数据

    SqlBulkCopy是.net2.0的新特性,平时用的很少,但是其功能却是非常强大,对于批量插入数据性能非常优越

    代码
    /// <summary>
    /// bulk插入
    /// </summary>
    private void BulkInsert()
    {
    SqlConnection sqlcon
    = new SqlConnection("Data Source=LocalHost;Integrated Security=SSPI;Initial Catalog=xiaotest;");
    DateTime beginTime
    = DateTime.Now;

    DataTable dt
    = new DataTable();
    dt.Columns.Add(
    "n", typeof(string));
    dt.Columns.Add(
    "name", typeof(string));
    for (int i = 1; i < 1000; i++)
    {
    DataRow r
    = dt.NewRow();
    r[
    "n"] = i;
    r[
    "name"] = "xiao";
    dt.Rows.Add(r);
    }

    sqlcon.Open();

    using (SqlBulkCopy bulk = new SqlBulkCopy("Data Source=LocalHost;Integrated Security=SSPI;Initial Catalog=xiaotest;"))
    {
    bulk.BatchSize
    = 1000;
    bulk.DestinationTableName
    = "test2";
    bulk.ColumnMappings.Add(
    "n", "n");
    bulk.ColumnMappings.Add(
    "name", "name");
    bulk.WriteToServer(dt);
    }


    DateTime endTime
    = DateTime.Now;
    TimeSpan useTime
    = endTime - beginTime;
    dt.Dispose();
    time
    = "使用时间" + useTime.TotalSeconds.ToString() + "";
    sqlcon.Close();
    sqlcon.Dispose();

     经过1000条数据的对比测试,一般性的循环插入与sqlbulk插入的时间对比为:

    一般插入:使用时间0.5200008秒

    使用builk插入:使用时间0.02秒

    性能非常优越

    作者:罗敏贵
    邮箱:minguiluo@163.com
    QQ群:34178394 建群 主要是寻找志同道合的人士一起学习和讨论自己的所学所思
    出处:http://luomingui.cnblogs.com/
    说明:专注于微软平台项目架构、熟悉设计模式、架构设计、敏捷个人和项目管理。现主要从事WinForm、ASP.NET、等方面的项目开发、架构、管理工作。文章为作者平时里的思考和练习,可能有不当之处,请博客园的园友们多提宝贵意见。
    知识共享许可协议本作品采用知识共享署名-非商业性使用-相同方式共享 2.5 中国大陆许可协议进行许可。

  • 相关阅读:
    摆花
    关于我的博客
    博客美化更新日志
    页面美化代码1.x
    本人已转至新博客!
    回归博客园
    退役快乐
    Luogu神贴合辑
    代码高亮预览
    NOIp2018普及组初赛解题报告
  • 原文地址:https://www.cnblogs.com/luomingui/p/1683102.html
Copyright © 2011-2022 走看看