C# 通过DataTable插入大量数据,50万数据只需要3秒

数据库sql脚本:

CREATE DATABASE TESTDB
GO
USE TESTDB
GO

CREATE TABLE TAB1
(
        NAME NVARCHAR(10),
        AGE NVARCHAR(10) ,
        ADRESS NVARCHAR(10)
)
delete  TAB1

SELECT * FROM TAB1
SELECT COUNT(0) FROM TAB1
class Program
    {
        static void Main(string[] args)
        {
            string conn = "Data Source=.;Initial Catalog=TESTDB;user id=sa;password=123456";
            DataTable dt = new DataTable();
            dt.Columns.Add("Name1");
            dt.Columns.Add("Age");
            dt.Columns.Add("Adress");
            for (int i = 0; i < 500000; i++)
            {
                dt.Rows.Add("Name" + i, i, "地址" + i);
            }
            DataTableToSQLServer(dt, conn, "TAB1");
        }

        public static void DataTableToSQLServer(DataTable dt, string connectionString, string tableName)
        {
            System.Diagnostics.Stopwatch stopwatch = new System.Diagnostics.Stopwatch();
            stopwatch.Start();
            using (SqlConnection destinationConnection = new SqlConnection(connectionString))
            {
                destinationConnection.Open();
                using (SqlBulkCopy bulkCopy = new SqlBulkCopy(destinationConnection))
                {
                    try
                    {
                        bulkCopy.DestinationTableName = tableName;//要插入的表的表名
                        bulkCopy.BatchSize = dt.Rows.Count;
                        bulkCopy.ColumnMappings.Add("Name1", "NAME");//映射字段名 DataTable列名 ,数据库 对应的列名
                        bulkCopy.ColumnMappings.Add("Age", "AGE");
                        bulkCopy.ColumnMappings.Add("Adress", "ADRESS");
                        bulkCopy.WriteToServer(dt);
                        Console.WriteLine("插入成功!");
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message);
                    }
                    finally
                    {
                        if (destinationConnection.State == ConnectionState.Open)
                        {
                            destinationConnection.Close();
                        }
                        stopwatch.Stop();
                        Console.WriteLine("插入:" + dt.Rows.Count + "数据,耗时" + (stopwatch.ElapsedMilliseconds / 1000).ToString() + "秒");
                    }
                }
            }
        }
    }
时间: 2024-10-14 21:42:08

C# 通过DataTable插入大量数据,50万数据只需要3秒的相关文章

转:SQL SERVER数据库中实现快速的数据提取和数据分页

探讨如何在有着1000万条数据的MS SQL SERVER数据库中实现快速的数据提取和数据分页.以下代码说明了我们实例中数据库的“红头文件”一表的部分数据结构: CREATE TABLE [dbo].[TGongwen] (    --TGongwen是红头文件表名 [Gid] [int] IDENTITY (1, 1) NOT NULL , --本表的id号,也是主键 [title] [varchar] (80) COLLATE Chinese_PRC_CI_AS NULL ,  --红头文件

SqlBulkCopy类进行大数据(10000万条以上)插入测试

好多天没写博客了,刚刚毕业一个多月,在IT的路上真是迷茫啊! 关于上一篇博客中提到的,在进行批量数据插入数据库的时候可以通过给存储过程传递一个类型为Table的参数进行相关操作,在这个过程中本人没有进行效率的测试.后来查找发现可以通过SqlBulkCopy类进行大数据插入操作,本文就来介绍一个这个类的作用并做了相关的效率测试(与Insert语句进行对比). SqlBulkCopy只能向SqlServer表写入数据,该表既可以是同一个服务器上的也可以是远程服务器上的.当然要写入的数据即数据源不单单

年薪50万的大数据分析师养成记【摘抄】

以下是一位在数据分析领域打滚了N年后,写下的一些体会,一定能给新人一些借鉴的地方.(总结的不错,大家可以借鉴学习哦) 一.数据分析师有哪些要求? 1.理论要求及对数字的敏感性,包括统计知识.市场研究.模型原理等. 2.工具使用,包括挖掘工具.数据库.常用办公软件(excel.PPT.word.脑图)等. 3.业务理解能力和对商业的敏感性.对商业及产品要有深刻的理解,因为数据分析的出发点就是要解决商业的问题,只有理解了商业问题,才能转换成数据分析的问题,从而满足部门的要求. 4.汇报和图表展现能力

年薪50万的大数据分析师养成记

以下是一位在数据分析领域打滚了N年后的分析师写下的一些总结和体会大家可以借鉴学习! 一.成为数据分析师有哪些要求? 1.理论知识要宽泛,涉及数学.市场和技术.要求及对数据敏感,包括统计知识.市场研究.模型原理等. 2.常规分析工具的使用,包括数据库.数据挖掘.统计分析工具,常用办公软件(Excel.PPT.思维导图)等等. 3.有一定的业务理解能力,能理解业务背后的商业逻辑.因为只有理解了商业问题,才能转换成数据分析的问题,从而满足部门的要求. 4.数据报告和数据可视化的能力.数据分析得再好,如

阿里年薪50万的JAVA工程师转大数据学习路线

大数据有两个方向,一个是偏计算机的,另一个是偏经济的.你学过Java,所以你可以偏将计算机的. Java程序员想转大数据可行吗?Java是全世界使用人数最多的编程语言.不少程序员选择Java做为了自己的编程第一语言,但随之而来的是Java程序员接近饱和的人才市场.由此,随着大数据时代的到来,有很多Java程序员想要转行大数据. 不得不说,大数据行业可以说是为Java程序员量身打造的一个朝阳行业?为什么要这么说呢? 互联网是当下流行趋势,且未来可期.大数据的发展亦是时代发展的必然,如果大家还想要了

mysql8.0如何快速生成100万数据人员信息数据

在爱学习mysql优化时 我需要大量数据才检测sql语句的效率 下面给大家模拟一个生成100万人员信息的数据的范例 创建一个数据库  名为test 建立表 create table t(id bigint not null auto_increment primary key, mobile bigint, password varchar(64), username varchar(64), sex tinyint not null default 1, birthday datetime,

mysql 3200万数据,优化分页查询

my.ini参数修改了下 Java代码   table_cache=512 bulk_insert_buffer_size = 100M innodb_additional_mem_pool_size=30M innodb_flush_log_at_trx_commit=0 innodb_buffer_pool_size=207M innodb_log_file_size=128M innodb_flush_log_at_trx_commit默认值1的意思是每一次事务提交或事务外的指令都需要把日

年薪50万码农转行卖凉皮~Why?

今年5月份,一位码农哥的一篇<十年码农自述:我为什么辞职卖凉皮>文章在互联网上引起了不小的轰动.是什么原因让这位码农哥放弃了互联网行业年薪50万的工作而转向又脏又累的餐饮行业呢?DevStore小编也带着同样的疑问带着大家去看看转行背后的故事. 个人经历篇~ 高考落榜,选择了北漂的生活,偶然的机会知道了一个叫PHP编写网站的服务器脚本语言,借用表哥的一台当时赛扬CPU主频只有800mhz的电脑学习PHP,跟着大伙集体在一个面积狭小的屋子里共同学习编程,冬天冷了只有自制煤炉取暖,遇到编程问题就问

年薪50万码农转行卖凉皮,互联网思维又一次颠覆?

我出生在陕西西安农村家庭,从小学习也一般,记得我们上幼儿园的时候,学生们都背着家里给自己用布缝制的书包,教室的窗口是用农村的白色蛇皮袋子,到了冬天北风呼啸,教室里因为没有桌子板凳而风从窗口呼啸. 从小学开始我就特别羡慕那些学习特好的同学,羡慕他们快速的解题速度,每次有很多和我一样的人都拼命非常努力,但是总是成绩平平,所以我们每天的生活都是做题,解题,高分数,你每天都得跟别人比,渐渐让我感觉从此你的人生就只能平庸,学习好的学生上好的学习,找好的工作,挣高的工资,尤其在我们印象最深的是高考,三天一大