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> 这里面 我使用了事务  您在使用的时候 也可以不用事务
     
     

  • 相关阅读:
    sql命令附加数据库
    数据解析0102
    xml file parser
    c#字定义异常处理类
    simple workflow implement
    High Performance Multithreaded Work Item / Event Scheduling Engine
    字符定位
    C#实现的不重复随机数序列生成算法
    Thread并发数控制
    通过Assembly来创建Type Instance
  • 原文地址:https://www.cnblogs.com/zhwl/p/1962301.html
Copyright © 2011-2022 走看看