zoukankan      html  css  js  c++  java
  • .net批量插入SqlServer数据库的方法:

    using System;
    using System.Collections.Generic;
    using System.Configuration;
    using System.Data;
    using System.Data.SqlClient;
    using System.Diagnostics;
    using System.Linq;
    using System.Text;

    namespace SqlServerBulkInsert
    {
        class Program
        {
            public static void BulkToDB(DataTable dt)
            {
                SqlConnection sqlConn = new SqlConnection(
                    ConfigurationManager.ConnectionStrings["connectionString"].ConnectionString);
                SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlConn);
                bulkCopy.DestinationTableName = "BulkTestTable";
                bulkCopy.BatchSize = dt.Rows.Count;

                try
                {
                    sqlConn.Open();
                    if (dt != null && dt.Rows.Count != 0)
                        bulkCopy.WriteToServer(dt);
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    sqlConn.Close();
                    if (bulkCopy != null)
                        bulkCopy.Close();
                }
            }
            public static DataTable GetTableSchema()
            {
                DataTable dt = new DataTable();
                dt.Columns.AddRange(new DataColumn[]{  
                 new DataColumn("Id",typeof(int)),  
                 new DataColumn("UserName",typeof(string)),  
                 new DataColumn("Pwd",typeof(string))});

                return dt;
            }
            static void Main(string[] args)
            {
                Stopwatch sw = new Stopwatch();
                for (int multiply = 0; multiply < 10; multiply++)
                {
                    DataTable dt = GetTableSchema();
                    for (int count = multiply * 100000; count < (multiply + 1) * 100000; count++)
                    {
                        DataRow r = dt.NewRow();
                        r[0] = count;
                        r[1] = string.Format("User-{0}", count * multiply);
                        r[2] = string.Format("Pwd-{0}", count * multiply);
                        dt.Rows.Add(r);
                    }
                    sw.Start();
                    BulkToDB(dt);
                    sw.Stop();
                    Console.WriteLine(string.Format("Elapsed Time is {0} Milliseconds", sw.ElapsedMilliseconds));
                }

                Console.ReadLine();
            }
        }
    }

    //------------------以下是测试数据库及表的建立sql语句————————————————————————————

    USE [BulkTestDB]
    GO

    /****** Object:  Table [dbo].[BulkTestTable]    Script Date: 09/22/2016 09:38:04 ******/
    SET ANSI_NULLS ON
    GO

    SET QUOTED_IDENTIFIER ON
    GO

    SET ANSI_PADDING ON
    GO

    CREATE TABLE [dbo].[BulkTestTable](
        [Id] [int] NOT NULL,
        [UserName] [nvarchar](32) NULL,
        [Pwd] [varchar](16) NULL,
    PRIMARY KEY CLUSTERED
    (
        [Id] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
    ) ON [PRIMARY]

    GO

    SET ANSI_PADDING OFF
    GO

  • 相关阅读:
    接口自动化(三)--读取json文件中的数据
    接口自动化(二)--操作Excel获取需要数据
    接口自动化(一)--概述
    pycharm(2016.3.2版本)导入工程文件执行程序时弹出Edit configuration
    使用Fiddler实现网络限速
    fiddler工具条、状态栏、请求信息栏各按钮的作用
    修改elementUI源码新增组件/修改组件
    DRF框架的基本组件
    django之原生SQL操作封装
    jqtree使用说明
  • 原文地址:https://www.cnblogs.com/rengke2002/p/5895004.html
Copyright © 2011-2022 走看看