关于sqlbulkcopy,程序中使用sqlbulkcopy会让运行效率下降吗?

新人菜鸟一枚,目前要做的程序是基于原有erp数据的开发。
我使用sqlbulkcopy,在erp数据库中获取数据,放在自己的数据库中。
这样对本身erp的程序运行效率会有影响吗?
(我是每天定时在00:00左右进行获取)

1个回答

sqlbulkcopy本身就是为批量插入数据提高效率而准备的。但是sqlbulkcopy过程中,需要禁用别的事务,但是你放在半夜执行,应该问题不大。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
SqlBulkCopy
SqlBulkCopy 的方法WriteToServer 無法存取目的地資料表
SqlBulkCopy的使用
我将一些数据放到datatable中,然后通过使用SqlBulkCopy将数据放入数据表中。rn但是表中有一字段值是通过sql语句GetDate()获得。请问该字段的数值怎么通过datatable和SqlBulkCopy插入到数据表中。rn
关于SqlBulkCopy
使用sql server时可以进行批量更新,那么使用oracle能么?有像SqlBulkCopy这样的批量更新方法么?
.net 中的 SqlBulkCopy 批量插入会锁表吗?
可以明确地说:如果不指定为锁表方式进行,不会锁表。 SqlBulkCopyOptions 枚举
SqlBulkCopy 支持Access数据库吗?
导入大批量的数据到Access中,rnrnSqlBulkCopy? 不支持 Accessrnrn还有那种可以支持执行大批量复制数据操作呢?rn
使用SqlBulkCopy实现批量插入
首先说下使用到的C#技术,关于使用Nopi导入Excel不叙述了,涉及到的知识C#IO流打开本地文件 C#映射主要是为了将List转化为datatable,好像也就这么两个知识点 接下来就是代码实现和分步骤解析了 第一步就是打开本地Excel文件 “`         string filename = @”E:\Demo\SqlBulkCopy\测试.xlsx”;
Sqlbulkcopy使用的几点心得
DataTable table = new DataTable(); using (var adapter = new SqlDataAdapter(sourceCommand)) { adapter.Fill(table); } using (SqlBulkCopy bulk = new SqlBulkCopy(targetConnection, SqlBulkCopyOptions....
关于sqlbulkcopy的问题 急!!!
我现在在用sqlbulkcopy批量导入数据库(从Excel获得数据,生成DataTable),但是我实际上,我应该把DataTable分成两个插入数据库。rn简单的说:DataTable由 学号,姓名,学院名 组成,但是在Student表中 学号,姓名,学院代码 组成,College表 学院代码,学院名 组成,我应该怎么把数据( DataTable )插入到Student中!rnrnrnrn顺便问一下,用sqlbulkcopy导入数据库,每格数据后面会出现大量的空格,怎么解决!
SqlBulkCopy 的使用问题。
程序要进行的大数据量的更新或者插入,以前使用的是SqlDataAdapter的update来实现的。rn现在为了提高效率,想使用SqlBulkCopy 的WriteToServer来实现。rnrn有以下问题咨询一下大家。rn1,WriteToServer相比SqlDataAdapter的update,有什么缺点?或者使用的注意事项?rn2,WriteToServer更新时,如果其中一条数据有问题,更新失败,是不是所有的数据都不更新?rn3,WriteToServer还能知道更新了多少条数据啊?类似update的返回值。rnrn谢谢回答了,万分感谢
SqlBulkCopy请教
如果是不同的表结构,如table1里面有两个字段,table2有4个。能把table1的两个字段的数据复制到table2吗?
批量插入数据 C# SqlBulkCopy使用
private static void DataTableToSQLServer( DataTable dt) { string connectionString = GetConnectionString(); using (SqlConnection destinationConnection =new ...
使用SqlBulkCopy方式插入数据
/// <summary> /// 使用SqlBulkCopy方式插入数据 /// </summary> /// <param name="dt">批量插入的数据</param> /// <param name="tableName">插入到数据库
SqlBulkCopy 使用案例
![这里写图片描述](http://img.blog.csdn.net/20150814095023172) //新增 private void btnAddColumn_Click(object sender, EventArgs e) { if (String.IsNullOrEmpty(txtColumn.Text.Trim())) {
sqlbulkcopy的问题
//目标数据库表名rn sqlbulk.DestinationTableName = "File";rn //数据集字段索引与数据库字段索引映射rn sqlbulk.ColumnMappings.Add(0, "FileName");rn sqlbulk.ColumnMappings.Add(1, "CurrentTime");rn //导入rn sqlbulk.WriteToServer(dt);rn sqlbulk.Close();rnrn但是却说 无法访问目标表“File”,这是怎么回事,有人知道吗
SqlBulkCopy代码
摘要:使用.NET相关技术向数据库中插入海量数据是常用操作。本文对比ADO.NET和LINQ两种技术,分别使用SqlBulkCopy()和InsertAllOnSubmit()方法进行操作。得出结论:相同插入工作量(1w条数据)插入效率相差200倍之巨! 本文件给出了完整的测试代码和mssql数据库备份文件(bak格式)
【.NET】使用SqlBulkCopy导入数据
.net2.0后ado.net提供了一个快速导入sqlserver的方法sqlbulkcopy.导入效率非常高. 包装了一个简单的sqlbulkcopy类,用于数据从datatable导入到sqlserver.代码如下: using System; using System.Collections.Generic; using System.Data; using Syst...
SqlBulkCopy批量插入数据
SqlBulkCopy介绍          SqlBulkCopy是.NETFramework 2.0新增的类,位于命名空间System.Data.SqlClient下,主要提供把其它数据源的数据有效批量的加载到SQL Server表中的功能。类似与Microsoft SQL Server包中名为bcp(http://baike.sogou.com/v10510240.htm?fromTitl
sqlbulkcopy问题
今天早上做了实验用了用 SQLBulkCopy,代码如下:rn[code=C#]rnusing (SqlConnection conn = new SqlConnection(DbHelperSQL.GetConnectionString(ConnectionString.Scm)))rn rn conn.Open();rn using(SqlTransaction transaction=conn.BeginTransaction())rn rn using (SqlBulkCopy bulkCopy = new SqlBulkCopy(conn,SqlBulkCopyOptions.Default, transaction))rn rn tryrn rn bulkCopy.BatchSize = batchsize;rn bulkCopy.BulkCopyTimeout = 600;rn bulkCopy.ColumnMappings.Add("CardID", "CardID");rn bulkCopy.ColumnMappings.Add("UserID", "UserID");rn bulkCopy.ColumnMappings.Add("CardPassWord", "CardPassWord");rn bulkCopy.ColumnMappings.Add("Note", "Note");rn bulkCopy.ColumnMappings.Add("IsUse", "IsUse");rn bulkCopy.ColumnMappings.Add("ActivitiesID", "ActivitiesID");rn //bulkCopy.NotifyAfter = 2000;rn //bulkCopy.SqlRowsCopied += new SqlRowsCopiedEventHandler(bulkCopy_SqlRowsCopied);rn bulkCopy.DestinationTableName = "dbo.card";rn bulkCopy.WriteToServer(data);rn transaction.Commit();rnrn rn catch (Exception ex)rn rn transaction.Rollback();rn throw new Exception("导入数据错误");rnrn rn rn rn rn rn rn rn[/code]rn数据库中表结构如下示:rn[code=C#]rn [ID] [int] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,rn [UserID] [int] NOT NULL,rn [FormCode] [bigint] NULL,rn [CardID] [nvarchar](50) NOT NULL,rn [CardPassWord] [nvarchar](50) NOT NULL,rn [Note] [nvarchar](500) NULL,rn [PostDate] [datetime] NULL,rn [IsUse] [smallint] NULL,rn [MobilePhone] [nvarchar](20) NULL,rn [ActivitiesID] [int] NULL,rn [ElesID] [int] NULL,rn [SendTime] [datetime] NULL,rn[/code]rn代码中我是从excel中读入的数据,所以临时添加了一个表格,代码如下:rn[code=C#]rn DataTable data = new DataTable();rn data.Columns.Add(new DataColumn("ID", typeof(int)));rn data.Columns.Add(new DataColumn("UserID", typeof(int)));rn data.Columns.Add(new DataColumn("CardID", typeof(string)));rn data.Columns.Add(new DataColumn("CardPassWord", typeof(string)));rn data.Columns.Add(new DataColumn("Note", typeof(string)));rn data.Columns.Add(new DataColumn("IsUse", typeof(int)));rn data.Columns.Add(new DataColumn("ActivitiesID", typeof(int)));rnrnrn int nCardIndex = 0;rn int nRowCounts = dt.Rows.Count;rn for (var i = 0; i < nRowCounts; i++)rn rn DataRow row = data.NewRow();rn row["CardID"] = dt.Rows[i].Field("CardID");rn row["CardPassWord"] = dt.Rows[i].Field("CardPassWord");rn row["Note"] = this.Note;rn row["IsUse"] = 0;rn row["ActivitiesID"] = this.ActivityId;rn row["UserID"] = 0;rn data.Rows.Add(row);rn rn[/code]rnrn我试着插入一条数据或者 20万条数据,去数据库查询的时候 ,的确是插进去了,但是 等执行完成的时候,数据库中插入的数据又没有了。难道自动回滚了?没有报错啊 。请大家给指点指点。
SqlBulkCopy异常处理
在用SqlBulkCopy进行数据迁移时,如果数据本身就有异常(如:数据长度大于表中定义的长度),怎样让所有数据回滚?网上的一些方法,我试过了,都报“此 SqlTransaction 已完成;它再也无法使用。”的错误
SqlBulkCopy导入数据时,需要使用SqlTransaction吗?
感觉SqlBulkCopy应该有自己处理回滚的能力,感觉而已,不知道这个时候是否需要使用SqlTransaction事务。
使用SqlBulkCopy 直接导入到SQL?
rn请问有没有更快的方法把文本文件格式的内容导入到SQL里表里,我先是用数据流把文本文件写入datatable,方法是用数组一条一条写入,再使用SqlBulkCopy类导入到SQL里表里,但是还是很慢。rn文本的内容大小有(127756KB)
如何使用SqlBulkCopy调用存储过程
我想通过SqlBulkCopy插入大量数据(上千万),需要创建索引,但是数据中会有重复项,所以希望能在插入时检测数据库中是否有重复项,如有则删除并插入新值,如何通过SqlBulkCopy或者TVP实现?他们好像都无法调用自定义的存储过程
使用 SqlBulkCopy大批量插入数据到数据库
本博客主要记录自己的学习成长 如有雷同 请联系~
关于sqlbulkcopy类使用遇到的异常问题
Location: record.cpp : 801rnExpression: newColLen >= WideTextPointer :: OVERHEADrnSPID: 54rnProcess ID : 1616rnrn我是从数据源中读出的数据 定义了一个datatable 插入datatable后 最后一步WriteToServer(datatable)出现这个异常rn测试普通sql表都操作无问题 但要插入hubble.net的软件QueryAnalyzer生成的sql表就出现这个问题 不知道哪位大侠遇到过这个问题吗 ?帮忙看看
数据迁移之SqlBulkCopy对象(一)
最近在做数据导入的一些功能,因为涉及到的数据比较多,所以就要考虑效率的问题了,经过简单计算,这个系统得支持几十万条数据才行,如果用我们通常使用的insert  into 语句效率可想而知,点一下按钮就在那等吧,不用说用户,我们自己都受不了。     后来经过查询资料得知,.Net Framework提供的SqlbulkCopy函数就可以将原来一条一条处理的数据经过批量处理,并且Sqlbu
DataAdapter和SqlBulkCopy的插入性能测试
DataAdapter 的插入代码 public static bool UpdateDataSet(SqlConnection con, DataSet dataset, string tableName) { string sql = string.Format(@"select * from {0} where 1=0", tableName);
SqlBulkCopy批量插入数据库
今天发现了一个超级快速插入大量数据到数据库的方法SqlBulkCopy,由于我这里是读Excel文件,所以我这里会提及到处理空行的方法和读取Excel的方法。下面我们会通过数据库跟踪器跟踪数据库发生了什么。 我们开始创建一个模型 public class TBModel { public string name { get; set; } public...
SqlBulkCopy问题,help!!!!!!!!
用SqlBulkCopy进行数据导入,用Excel为数据源,就可以直接进行数据导入! rn但导入数据源用的是DBF,数据信息已经读取到内存,但在执行到bulkCopy.WriteToServer(sourceData);时 rn就会出现如下错误: rn"在从服务器接收结果时发生传输级错误。 (provider: TCP 提供程序, error: 0 - 远程主机强迫关闭了一个现有的连接。)" rnrn然后sqlserver的服务会被停止! rn在调试时 ,数据已经读到DT中,估计应该是映射没做好的原因!rnrnrn应该怎么做?rnrnthanks a lot!
SqlBulkCopy批量保存数据(C#)
我使用SqlBulkCopy批量往数据库中插入数据遇到重复的数据怎么办? 能不能设置什么跳过该次插入,这是我写的插入方法[img=https://img-bbs.csdn.net/upload/201305/20/1369039919_257317.jpg][/img]大家看一下,在哪里判断数据已经存在呢?求帮忙呀
如何提升SqlBulkCopy的效率
在sql server 2005有一张大表,存一个月的数据,一个月有几千万数据,使用的是sqlbulkcopy进行批量导入,一次导入几百条数据,调用很频繁。最近数据量增大,往往入库效率很低,500条数据需要2秒钟,造成前面大量数据积压。rn我知道索引会造成入库效率低下,这张表也确实有几个非聚集索引,可是用户也需要能够实时的查询数据,如果入的时候禁用索引,同时再有查询就会很慢。rn不知有什么方法能够提升入库效率呢,比如一批入库的量多一些?或者跟其他设置有什么影响比如日志。rn这个数据库的恢复模式是simplernrn还有我们也有另外一个库,结构完全一样,数据库也基本一致,但另一个库就表现的比较好,不知道为什么。唯一的区别就是表现好的库,用户没怎么用,没什么其他查询操作。
SqlBulkCopy类的问题
我现有3张数据库表,表结构都不相同。分别为A,B,C表。rnrn现在我要将B表和C表的部分字段内容导入到A表中。rnrnA表的主键列,内容来自B表。另外其他列,内容来自C表。rnrn请问如何用SqlBulkCopy类来解决?rnrn将B表列映射到A表的主键,然后数据传输,这个可以实现。但是当把C表的数据传输到A表时,就会报错,说主键不能为空。
SqlBulkCopy批量插入数据(实例)
SqlBulkCopy SQL2005 批量插入数据 性能优化
SqlBulkCopy通过DataTable批量插入数据
/// /// /// /// 目标连接字符 /// 目标表 /// 源数据 private void SqlBulkCopyByDatatable(string connectionString, string TableName, DataTable dt) {
SqlBulkCopy大数据复制插入数据
[code=&quot;java&quot;] public partial class ASP_NET : System.Web.UI.Page { private DateTime startTime; string connString = &quot;&quot;;//数据库连接 protected void Button1_Click(object sender, EventArgs e) ...
SqlBulkCopy访问局部临时表
想使用SqlBulkCopy将数据导入到sqlserver的局部临时表,然后调用存储过程执行一系列查询。结果SqlBulkCopy总是无法访问sql_conn2中创建的#table。使用全局临时表倒是可以,但是多人同时操作时会出现问题。rnrn请高人指点SqlBulkCopy怎么能访问到#table。谢谢!rnrn简要示例:rn[code=csharp]rnSqlConnection sql_conn2 = new SqlConnection(Properties.Resources.sql_connString);rnSqlCommand sql_cmd2=new SqlCommand("SELECT * INTO [#table] FROM [table] where 1=2",sql_conn2)rnsql_conn2.Open();rnsql_cmd2.ExecuteNonQuery();rnSqlBulkCopy sbc = new SqlBulkCopy(sql_conn2);rnsbc.BulkCopyTimeout = 5000;rnsbc.DestinationTableName = "#table";rnsbc.NotifyAfter =100;rnsbc.WriteToServer(datatable);rn[/code]rnrn谢谢大家!rn
[急]SqlBulkCopy 效率问题
在软件开发中,把数据从一个地方复制到另一个地方是一个普遍的应用。 在很多不同的场合都会执行这个操作,包括旧系统到新系统的移植,rn从不同的数据库备份数据和收集数据。 ASP.NET 2.0有一个SqlBulkCopy类,它可以帮助你从不同的数据源复制数据到SQL SERVER数据库。rn下面是我进行的性能测试:rnrn插入记录数 起始时间      终止时间          花费时间(毫秒)rn100 2008-08-07 16:08:18 2008-08-07 16:08:18 765rn1000 2008-08-07 16:08:47 2008-08-07 16:08:53 5312rn5000 2008-08-07 16:09:38 2008-08-07 16:10:03 25578rn10000 2008-08-07 16:11:46 2008-08-07 16:12:37 50796rn50000 2008-08-07 16:13:30 2008-08-07 16:17:32 241656rnrn经分析知时间主要消耗在查询上,rn如对一个人成分5000 行的数据进行复制:rnrn程序开始:2008-08-07 17:15:15rn查询开始:2008-08-07 17:15:15rn查询结束:(复制开始)2008-08-07 17:15:40rn程序结果:(复制完成)2008-08-07 17:15:42rn总计消耗时间:26921rnrn查询花了望25秒,而复制仅花了2秒。rnrn这是一个十分不正常的现象。rn理论上说:查询属于读操作,复制属于写操作。rn现在读的速度远慢于写的速度,当务之急就是找一个高效的查询。rnrn请问题读贴大哥们,我们数据量在50000-100000条左右,执行速度太慢,有没有什么提高性能的发办法?rn急,谢谢!rn
SqlBulkCopy 之大数据插入
对于批量在SQL数据库中插入大量数据,如果用传统的Insert插入,那效率肯定很低。现在推荐一种效率极高的插入数据的方法,采用SqlBulkCope来处理数据,即使百万级的数据插入,也是很快的。 实例如下: public void AddDataToSQL(string connStr, string tableName, DataTable dt) {
SqlBulkCopy 返回Id
如何在bc.WriteToServer(dtTemp);之后返回数据库中自动生成的Id值到dtTemp中的Id列中?
SqlBulkCopy批量插入海量数据
C# 利用SqlBulkCopy 高性能批量插入海量数据 高效批量插入数据
SqlBulkCopy 数据库批量插入数据
///         /// 批量插入  注:DT的tableName为要更新的数据库表名         ///         ///         ///         public void  tsSqlBulkCopy(DataTable dt)         {             try             {                
相关热词 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池 c#5.0 安装程序 c# 分页算法