zoukankan      html  css  js  c++  java
  • 如何快速插入大量的数据(Sqlserver)

    经过测试 10万条记录 需要1.5-1.7秒

    只是插入一列 4列的话 需要3秒 (我的机器是4G内存)

    目标数据库只能是Sqlserver

    来源数据库 无所谓 只要能用ado.net 将来源数据读取到Dataset或者Datareader 中就可以

    using System.Data;
    using System.Diagnostics;
    using System.Data.SqlClient;      

       

           string connectionString = "Data Source=HG-J3EJJ9LSW5PY;Initial Catalog=Test;User ID=sa;password=hg";
            DataTable dataTable
    = sql_.select_datagrid(" select a  from large where 1=0 ").Tables[0];
           
    string passportKey;
           
    for (int i = 0; i < 100000; i++)
            {
                passportKey
    = Guid.NewGuid().ToString();
                DataRow dataRow
    = dataTable.NewRow();
                dataRow[
    0] = passportKey;
             
                dataTable.Rows.Add(dataRow);
            }
            SqlConnection sqlConnection
    = new SqlConnection(connectionString);
            sqlConnection.Open();
            SqlTransaction sqltran
    = sqlConnection.BeginTransaction();
            SqlBulkCopy sqlBulkCopy
    = new SqlBulkCopy(sqlConnection, SqlBulkCopyOptions.KeepIdentity, sqltran);
            sqlBulkCopy.DestinationTableName
    = "large";
            sqlBulkCopy.BatchSize
    = dataTable.Rows.Count;
           
           
           
    if (dataTable != null && dataTable.Rows.Count != 0)
            {
                sqlBulkCopy.WriteToServer(dataTable);
            }
            sqlBulkCopy.Close();

            sqltran.Rollback();
            sqlConnection.Close();

    注解: <1> sqlBulkCopy.DestinationTableName = "large";    large 指的是目标表的名称

           <2>  DataTable 的结构要和数据库中的表的结构相同

                 (DataTable的列不能多于数据库里面的)

                 (DataTable的列可以少于数据库里面的 如果数据库这一列有默认值的话)

          <3> 这里面 我使用了事务  您在使用的时候 也可以不用事务
     
     

  • 相关阅读:
    【转】Lesktop 1.0 ——开源JS控件库,WebIM和网盘
    个人开公司的流程,以后用得着(转)
    C#中的弱引用
    同步异步的知识补充
    SynchronizationContext
    泛型弱引用(不继承 System.WeakReference)
    【转】亂數產生器:Random 與 RNGCryptoServiceProvider
    Oracle trunc()函数的用法
    [转]C# WinForm自定义控件整理
    自定义控件小结进阶篇(转)
  • 原文地址:https://www.cnblogs.com/zhwl/p/1962301.html
Copyright © 2011-2022 走看看