c#批量插入数据库Demo

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

FROM:http://www.cnblogs.com/rengke2002/p/5895004.html
时间: 2024-08-25 02:11:10

c#批量插入数据库Demo的相关文章

Java MySql 批量插入数据库addBatch

//addBatch批量插入数据库 public static void insertCommentToMySql(Set<String> commentList) { Iterator<String> it = commentList.iterator(); Statement st=null; try { st = DBConnection.getConnection(dbName,dbUser,dbPwd).createStatement(); } catch (SQLExc

DataTable批量插入数据库

DataTable批量插入数据库 最近在将excel中的文件导入到数据库中,用程序进行编写,由于数据量较大所以速度很慢,后来采用了SqlBulkCopy类,解决了速度的问题,我就insert语句,sqldataadapter.update(dataset,tablename);sqlbulkcopy.WriteToServer(datatable);三个方法的性能进行比较: 1.生成测试的datatable表,表结构如下: UniqueID(主键,自动增长) | CompanyName | Co

MYSQL批量插入数据库实现语句性能分析

假定我们的表结构如下 代码如下   CREATE TABLE example ( example_id INT NOT NULL, name VARCHAR( 50 ) NOT NULL, value VARCHAR( 50 ) NOT NULL, other_value VARCHAR( 50 ) NOT NULL ) 通常情况下单条插入的sql语句我们会这么写: 代码如下   INSERT INTO example (example_id, name, value, other_value)

Word中表格内容批量插入数据库

一.内容概要 1,下载jacob.jar,将jacob自带的DLL放入SYSTEM32中,确保电脑装了WORD程序: 2,方法是:FILE[]遍历特定文件夹,JACOB读取WORD中表格的内容,封装成arraylist,然后批量插入数据库 二.核心码 1,words.java;遍历文件夹,取出word表格中的内容到arraylist package main.java.utils; import java.io.File;//用于遍历文件夹下所有文件 import java.util.Array

使用SqlBulkCopy将DataTable中的数据批量插入数据库中

#region 使用SqlBulkCopy将DataTable中的数据批量插入数据库中 /// <summary> /// 注意:DataTable中的列需要与数据库表中的列完全一致. /// </summary> /// <param name="conStr">数据库连接串</param> /// <param name="strTableName">数据库中对应的表名</param> //

批量插入数据库数据,有则更新,无则追加

# 批量插入数据库数据,有则更新,无则追加import pymysqlimport numpy as npimport pandas as pdconn = pymysql.connect( host='127.0.0.1', port=3306, user='root', passwd='root', db='py3_userinfo', charset='utf8' )# 游标cur = conn.cursor()df = pd.DataFrame([['合肥', 12, 110],['北京

MyBatis Oracle 使用序列批量插入数据库

由于现在项目昨晚批处理作业抽取数据主键生成器出现了问题,紧急解决用序列作为主键.   底层使用MyBatis与Oracle 数据库库交互. 和度娘交谈了很久她都没有给出解决方案.为   此自己写了想了一种方式,没想到一次测试完全通过.   大致demo如下  java 代码  1 /** 2 * 文件名称: InsertBatch 3 * 内容摘要: 测试 MyBatis 使用序列批量插入 4 * 创 建 人: sunrise 5 * 创建日期:2015-6-18 下午9:16:06 6 * 修

.net 使用SqlBulkCopy批量插入数据库

//一次批量插入100W条数据到数据库 static void Main(string[] args) { System.Random a = new Random(System.DateTime.Now.Millisecond); Stopwatch sw = new Stopwatch(); DataTable dt = GetTableSchema(); for (int count = 0; count < 1000000; count++) { DataRow r = dt.NewRo

大数据批量插入数据库使用(SqlBulkCopy )效率更高

SqlBulkCopy类是System.Data.SqlClient下的类,我们开发中不常用,甚至不知道有这么一个类的存在,但确实比sql插入,事务批量插入,sql批量拼接插入快很多,比调用存储过程插入方便 下面是它的用法: public static bool ExecuteTransactionScopeInsert(DataTable dt, int batchSize) { int count = dt.Rows.Count; string tableName = "TestTable&