问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

c#怎样向sqlserver批量插入数据

发布网友 发布时间:2022-04-21 02:21

我来回答

1个回答

热心网友 时间:2022-04-07 22:07

C#和MS SQL交互使用的技术叫做 ADO.NET。 使用ADO.NET可以方便的对SQL SERVER 进行操作。

(如果你对ADO.NET不了解,建议先MSDN一下)

批量插入数据,有两种方式,

1,数据比较复杂但是量不是很大,(这个大小的概念要视你的硬件、网络而定,一般在100万条以上才叫大)。

使用FOR循环进行插入, 即声明连接(conn.Open)然后进行遍历, 

一条一条插入数据库(执行Insert语句), 

一般来说,100W条数据,如果插入本机数据库的话, 耗时一般在40S-1分钟左右,

也可以在SqlServer中创建一个存储过程来执行Insert命令, 遍历时只需要调用存储过程即可,  存储过程的执行效率比Sql语句要高很多,因为不需要每次都编译。 

100W条数据用存储过程来执行的话,一般耗时在20S左右,。


2数据量巨大,但是类型较简单,(一般指上百万条数据)

使用ADO.NET提供的BulkCopy,即批量导入,

语法:

 public static void BulkToDB(DataTable dt, string TableName)
        {
            SqlConnection sqlConn = new SqlConnection(
            ConfigurationManager.ConnectionStrings["dbconnstr"].ConnectionString);
            
            SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlConn);
            bulkCopy.BulkCopyTimeout = 600;
            bulkCopy.DestinationTableName = TableName;
            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();
            }
        }

需要传入一个DataTable,一个表名。 


这种方式速度非常快,同样100W条数据,本机导入,大概3-5秒就可以完成,

但是需要注意,传入的DataTable必须和Sql Server中的表结构一模一样, 

比如你的表有3列,分别是Name, Age, Sex。  你传入的DataTable也必须是如此,所以这种方式只适合导入一些基础数据, 并不适合作为数据层的常用方法。


如果数据量巨大又要求很高的效率,更建议使用NoSql数据库

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
康复者的血清中含有什么免疫分子 血清里面有什么 走读的定义在哪些教育阶段适用? PostgreSQL修改数据库表的列属性操作 Ubuntu调整postgresql默认路径 ubuntu – Postgresql:更改默认数据路径 刘邦几个老婆刘邦老婆吕雉和戚夫人的不同结局 刘邦几个老婆?. 如何防止父母在微信群里抢红包? 有哪些适合夏天选择的长裙款式值得推荐? java中怎样向SQLserver中插入数据 sqlserver 怎么快速插入一条数据 SqlServer往视图中插入数据的问题!! 怎样用sql语句在sqlserver建表和插入数据 sqlserver 创建临时表怎样插入数据 SQLSERVER数据库中批量导入数据的几种方法 怎样用sql语句在sqlserver建表 和插入数据~ sqlserver 怎么往表里插入数据 sqlserver怎么插入数据 怎样往 sqlserver数据库添加一个数据? 我的豌豆荚号被盗了可以用身份证找回吗 为什么苹果上的掌上lol的设置里无法绑定大区 英雄联盟奥菲娜的新手训练营绑定不了大区怎么办 打开英雄联盟活动网页,绑定不了大区怎么回事? lol掌盟怎么改绑定大区T谏 为什么英雄联盟的声望无法绑定大区啊说要10点才可以? 掌上英雄联盟怎么换绑定大区 在掌上英雄联盟怎么绑定大区啊 掌上英雄联盟怎么设置绑定德玛西亚区 LOL八周年战斗之夜宝箱升级任务有哪些 sqlserver语句添加列(简单) 如何在SQLserver中利用循环语句插入大量的数据 SqlServer插入数据。将表A中的统计结果(3个)插入到表B中的某一行(3列)。 怎样快速向sqlserver插入上亿条数据 sqlserver 如何向数据库插入多条数据 数据条数不确定 sqlserver数据库执行更新时向另外数据表插入数据 怎样往 sqlserver数据库添加一个数据? sqlserver 下怎么建立数据库 怎么建表 美国北达科他大学和北达科他州立大学有什么区别 美国und在哪个洲 自费在美国学习飞行员,是UND还是purdue好? 匹兹堡州立大学 和北达科他大学哪个好? 美国中密歇根大学和美国北达科他大学哪个好 最好的外国大学是什么? 美国伍斯特理工学院有哪些优势专业 苏黎世联邦理工学院分数线是多少? 求哈佛大学的中英文简介 英美联办项目的2012年世界大学排名前100名 全世界排名前100的大学 世界顶级音乐专业的院校有哪些