巧用将大量的数据复制到数呢

时间:2021-10-29 06:06:41

假如我们一次准备向数据库服务器提交多条记录 , 一般可能会执行多次Insert命令 , 但这样做就要为插入的每个记录执行一次与数据库服务器的往返 , 显然这会给服务器增加很多的压力 , 效率方面也会大大的降低。

.net Framework 2.0新增功能Bulk Copy可以很快将大量数据加载到数据库中 , 现在我们来利用这一新功能来实现上述功能.

这里从SQL Server2000的NorthWind 的Orders表加载数据到DateTable模拟要向数据库服务器提交的多条记录集 . 用Tempdb库来模拟目标数据库服务器.

首先我们需要在Tempdb 建一个表temp_orders

(2)域名证书(这个可以在自己解析的页面找到的 USE TEMPDB   CREATE TABLE TEMP_ORDERS   (   TEMP_ORDERID INT,   TEMP_CUSTOMERID NCHAR(5),   TEMP_ORDERDATE DATETIME,   TEMP_SHIPNAME NVARCHAR(40)   )下面为模拟程序   protected void Page_Load(object sender, EventArgs e)   {   #region 从NorthWind的Orders表获取要插入的数据   DataTable dtNorthWindOrders = new DataTable();   using ( SqlConnection northWindConnection = new SqlConnection( \"Data Source=.;Initial Catalog=NorthWind;Integrated Security=True\" ) )   {   using ( SqlDataAdapter northWindAdapter = new SqlDataAdapter( \"SELECT ORDERID,CUSTOMERID,ORDERDATE,SHIPNAME FROM ORDERS\" , northWindConnection ) )   {   ll( dtNorthWindOrders );   }   }   #endregion   using ( SqlConnection tempdbConnection = new SqlConnection( \"Data Source=.;Initial Catalog=Tempdb;Integrated Security=True\" ) )   {   en( );   using ( SqlTransaction tran = ginTransaction( ) )   {   SqlBulkCopy bulkCopyOrders = new SqlBulkCopy( tempdbConnection , fault , tran );   stinationTableName = \"TEMP_ORDERS\";   //将数据源表字段和目标表的字段做个映射   d( \"ORDERID\" , \"TEMP_ORDERID\" );   d( \"CUSTOMERID\" , \"TEMP_CUSTOMERID\" );   d( \"ORDERDATE\" , \"TEMP_ORDERDATE\" );   d( \"SHIPNAME\" , \"TEMP_SHIPNAME\" );   lkCopyTimeout = 1000;   //每处理10行触发一个事件向页面上输出一个消息   lRowsCopied += new SqlRowsCopiedEventHandler( onRowsCopy );   tifyAfter = 10;   try   {   iteToServer( dtNorthWindOrders );   mit( );   }   catch ( Exception ex )   {   ite( String( ) );   }   finally   {   dtNorthWindOrders = null;   }   }   }   }   private void onRowsCopy ( object Sender , SqlRowsCopiedEventArgs args )   {   ite(\"已复制:\"+ String( ) + \" \" );}

我们通过SQL Server事件探察器发现执行的SQL为:

insert bulk TEMP_ORDERS ([TEMP_ORDERID] Int, [TEMP_CUSTOMERID] NChar(5) COLLATE Chinese_PRC_CI_AS, [TEMP_ORDERDATE] DateTime, [TEMP_SHIPNAME] NVarChar(40) COLLATE Chinese_PRC_CI_AS)

当我们通过运行程序可以看出这个速度会特别的快 , 使用此方法的明显优点是 : 减少对数据库的访问次数。

注释:WriteToServer不仅可以处理DataTable对象 , 同时它还可以处理DataReader ,DataRow 对象数组。

小孩脾虚便秘怎么调理
昆明宫颈糜烂
西宁包皮过长
相关阅读
高考志愿怎么挖?永州爱尔眼科带你完美“避坑”! 2024-11-17

如果把初中比喻再加第一场万里长征的话 那么,初中应征入伍单列就是这最后一步 稍有不慎,就有可能导致 十几年的寒窗苦读付诸东流! 对于很多家长、学生来说 单列应征入伍是真正没有注意到过 满脑袋都是各种问号 小学该

这项笔试重启!都昌招85人! 2024-11-02

根据工作商量和非典型肺炎诊疗有关立即,经研究工作,决定启动时上饶市2022本年度测验拔擢基层工作。现就有关事宜通告如下: 一、短时间商量1.墨水准考证短时间:2022年7月末4日9:00至7月末8日17:00。2.公共科目合格短时间:2

小暑之后,若你能坚持作准备三件小事,尤其是最后一个,或能赶走一年的湿气 2024-10-11

小暑便,全国极较少地方都再创了高温天气。在这种春天里面,闷热的空气平常让人烦不过气来,特别是到了早晨午后,大多数人都宁愿所缩在家里面吹起空调系统,也不不打算上街。尤其是对于所打算的年轻异性来说,更是责

拍好人像设备很重要,看看这三款手机展示出如何? 2024-10-09

拍人像三要素,都进来学习一下! 1、人好看 2、人好看 3、还是人好看 大家都协会了吗?开个玩笑,在520这天,大家应该都给老婆拍下了,不出意外的话,应该会被可怜拍的不好……其实这个问题,通常是受困于设备和软件的风

我家爱人自始暖心,就像暖暖的大太阳一样 2024-08-06

天一里面有多少主人公,可惜了花季,可惜了降雨,可惜了整整一个曾有。每个人的好像总可能会有那么一个人,让你的笑容来得最美丽,也可能会让你烦的最彻底。我们经历过了一些伤烦,弄的只剩才能用如何去爱人一个人,

搭建多元跨平台 推动范式发展 2024-08-06

本报讯(记者高丽)日前,由天津视觉艺术的学院主办,全省10所视觉艺术的学院、7所艺术的学院和4所师范大学视觉艺术的学院共同参与的“多元与范式:另行入学考试文化背景下西方高等视觉艺术教育基石教研研讨会”在天津

友情链接