zoukankan      html  css  js  c++  java
  • sql server 2005 大数据量插入性能对比

    sql server 2005大数据量的插入操作

    第一,写个存储过程,传入参数,存储过程里面是insert操作,

    第二,用System.Data.SqlClient.SqlBulkCopy实例方法,

    数据库表Passport

    CREATE TABLE [dbo].[Passport](
     [Id] [int] IDENTITY(1,1) NOT NULL,
     [PassportKey] [nchar](50) NOT NULL,
     [addtime] [datetime] NOT NULL,
     CONSTRAINT [PK_Passport] PRIMARY KEY CLUSTERED
    ( [Id] ASC)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
    ) ON [PRIMARY]

    存储过程 CreatePassport

    Create proc [dbo].[CreatePassport]
    @passport varchar(50),
    @addtime datetime
    as
    insert into Passport (PassportKey,addtime) values (@passport,@addtime)

    对比测试,方法一调用存储过程,循环插入数据,方法二,构造表的对象,然后调用SqlBulkCopy

    少量数据

     

    大量数据

    代码

    DataTable dataTable = GetTableSchema();
                string passportKey;
                for (int i = 0; i < count; i++)
                {
                    passportKey = Guid.NewGuid().ToString();
                    DataRow dataRow = dataTable.NewRow();
                    dataRow[1] = passportKey;
                    dataRow[2] = DateTime.Now; 
                    dataTable.Rows.Add(dataRow);
                }
                SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(connectionString);
                sqlBulkCopy.DestinationTableName = "Passport";
                sqlBulkCopy.BatchSize = dataTable.Rows.Count;
                SqlConnection sqlConnection = new SqlConnection(connectionString);
                sqlConnection.Open();
                if (dataTable!=null && dataTable.Rows.Count!=0)
                {
                    sqlBulkCopy.WriteToServer(dataTable);
                }
                sqlBulkCopy.Close();
                sqlConnection.Close();
    
                 
  • 相关阅读:
    (转)两千行PHP学习笔记
    PHP语言 -- 基础
    数据库-T-SQL 语句-高级查询
    数据库-T-SQL 语句-简单查询
    数据库-T-SQL 语句-创建表,删除表,CRUD操作的添加数据,修改数据,删除数据
    PHP 数组
    PHP函数
    PhP 基础
    无缝循环
    l两张图片轮播
  • 原文地址:https://www.cnblogs.com/MAYADIDI/p/3483611.html
Copyright © 2011-2022 走看看