首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏跟着阿笨一起玩NET

    C# 使用SqlBulkCopy类批量复制大数据

    于是在网上进行查找,发现了一个比较好的解决方案,就是采用SqlBulkCopy来处理存储数据。 SqlBulkCopy 类允许编写提供类似功能的托管代码解决方案。 还有其他将数据加载到 SQL Server 表的方法(例如 INSERT 语句),但相比之下 SqlBulkCopy 提供明显的性能优势。 使用 SqlBulkCopy 类只能向 SQL Server 表写入数据。  sqlbulkcopy =new SqlBulkCopy(connectionString, SqlBulkCopyOptions.UseInternalTransaction))                 

    4.8K10发布于 2018-09-18
  • 来自专栏全栈程序员必看

    SqlBulkCopy – The given value of type String from the data source cannot be converted to type

    SqlBulkCopy – The given value of type String from the data source cannot be converted to type of the specified target column 针对使用C#SqlBulkCopy对象遇到的问题总结 1.批量插入excel数据遇到的类型转换问题 2.去除非数据行 以下是对应的解决办法及代码 1 importedTable.AcceptChanges(); oledbda.Update(importedTable); } using (SqlBulkCopy bcp = new SqlBulkCopy(ConnectString)) //用bcp导入数据 { bcp.BatchSize

    1.2K10编辑于 2022-09-09
  • 来自专栏远在上海

    速度超快:使用SqlBulkCopy导入DataTable数据到MSSQL数据库

    相关的参考代码,原理就是创建一个临时表,把读取到内存的Excel数据(DataTable)使用SqlBulkCopy快速导入到数据库,然后再导入真正的业务表。
    #region public void SqlBulkCopyData(DataTable dt) 利用Net SqlBulkCopy 批量导入数据库,速度超快
            ///  


            /// 利用Net SqlBulkCopy 批量导入数据库,速度超快
            /// 

            ///   sqlbulkCopy = new SqlBulkCopy(sqlConnection, SqlBulkCopyOptions.Default, tran);
                     // 设置源表名称
                    sqlbulkCopy.DestinationTableName = dt.TableName;
                    //

    1.8K10发布于 2019-02-26
  • 来自专栏全栈程序员必看

    SqlTransaction.Dispose,RollBack ?「建议收藏」

    } SqlTransaction tran = conn.BeginTransaction(); using (SqlBulkCopy bulkCopy = new SqlBulkCopy(conn, SqlBulkCopyOptions.Default, tran)) { } SqlTransaction tran = conn.BeginTransaction(); using (SqlBulkCopy bulkCopy = new SqlBulkCopy(conn, SqlBulkCopyOptions.Default, tran)) {

    77210编辑于 2022-09-05
  • 来自专栏全栈程序员必看

    c#中高效的excel导入sqlserver的方法

    将oledb读取的excel数据快速插入的sqlserver中,很多人通过循环来拼接sql,这样做不但容易出错而且效率低下,最好的办法是使用bcp,也就是System.Data.SqlClient.SqlBulkCopy sqlconn.Close(); } //用bcp导入数据 using (System.Data.SqlClient.SqlBulkCopy bcp = new System.Data.SqlClient.SqlBulkCopy(connectionString)) {

    1.1K10编辑于 2022-07-18
  • 来自专栏GuZhenYin

    GZY.EFCore.BulkExtensions 支持达梦数据库的EF Core批量操作库详解

    主要讲解一下两个数据库的实现原理吧 1.MySql的实现方式 1.1批量插入 这其实就不用介绍了,就是最常见的SqlBulkCopy的形式进行数据导入 优点就是量大管饱,速度快 缺点就是已经脱离了执行 SQL的范畴,所以在实体监听这些处理会比较麻烦 注意:Mysql使用SqlBulkCopy需要开启local_infile功能,并需要在连接字符串中配置:AllowLoadLocalInfile=true ;  1.2批量修改 采用了Mysql的 on duplicate key update 语法进行批量处理 首先会创建临时表,然后通过SqlBulkCopy将数据批量导入至临时表中 然后通过 解析实体产生 {firstPrimaryKey}; 这样就可以快速的进行批量删除. 2.达梦数据库的实现方式  2.1批量插入  其实国产的达梦数据库也提供了对应的SqlBulkCopy类,DmBulkCopy,我们直接按规范实现即可

    62110编辑于 2024-12-06
  • 来自专栏java架构师

    SQL Server 高性能写入的一些总结

    本文目录 代码中的问题 数据库性能开销 使用存储过程 使用数据库事务 使用SqlBulkCopy 使用表参数 1.1.2 正文 假设,我们要设计一个博客系统,其中包含一个用户表(User), 图4 数据写入时间 使用SqlBulkCopy 通过使用事务封装了写入操作,当我们重新运行代码,发现数据写入的速度大大提高了,只需4.5109秒,由于一个事务只需分配一次锁资源,减少了分配锁和数据库联接的耗时 当然,我们可以也使用SqlBulkCopy实现大量数据的写入操作,首先我们创建数据行,然后使用SqlBulkCopy的WriteToServer()方法将数据行批量写入到表中,具体实现代码如下: /// 其实,我们需要调用ColumnMappings.Add方法建立起自定义数据列和表中数据列的对应关系,接下来,我们调用SqlBulkCopy的WriteToServer()方法将数据行写入表中。 图5 数据写入时间 上面,我们通过事务和SqlBulkCopy实现数据批量写入数据库中,但事实上,每次我们调用cmd.ExecuteNonQuery()方法都会产生一个往返消息,从客户端应用程序到数据库中

    2.1K160发布于 2018-04-11
  • 来自专栏java架构师

    SQL Server 高性能写入的一些总结

    本文目录 代码中的问题 数据库性能开销 使用存储过程 使用数据库事务 使用SqlBulkCopy 使用表参数 1.1.2 正文 假设,我们要设计一个博客系统,其中包含一个用户表(User), 图4 数据写入时间 使用SqlBulkCopy 通过使用事务封装了写入操作,当我们重新运行代码,发现数据写入的速度大大提高了,只需4.5109秒,由于一个事务只需分配一次锁资源,减少了分配锁和数据库联接的耗时 当然,我们可以也使用SqlBulkCopy实现大量数据的写入操作,首先我们创建数据行,然后使用SqlBulkCopy的WriteToServer()方法将数据行批量写入到表中,具体实现代码如下: /// 其实,我们需要调用ColumnMappings.Add方法建立起自定义数据列和表中数据列的对应关系,接下来,我们调用SqlBulkCopy的WriteToServer()方法将数据行写入表中。 图5 数据写入时间 上面,我们通过事务和SqlBulkCopy实现数据批量写入数据库中,但事实上,每次我们调用cmd.ExecuteNonQuery()方法都会产生一个往返消息,从客户端应用程序到数据库中

    1.6K20发布于 2019-01-30
  • 来自专栏技术之路

    sqlserver 的事务和c#的事务

    _dt.Rows.Add(_dr); }); using (SqlBulkCopy _sqlcopy = new SqlBulkCopy(_strCon, SqlBulkCopyOptions.Default, _sqlTransaction))

    1.3K90发布于 2018-01-31
  • 来自专栏跟着阿笨一起玩NET

    自定义 SqlHelp

    conn.Open(); 313 sqlBulkTran = conn.BeginTransaction(); 314 using (SqlBulkCopy copy = new SqlBulkCopy(conn, SqlBulkCopyOptions.CheckConstraints, sqlBulkTran)) 315 copy.DestinationTableName = tableName;//指定目标表 317 copy.WriteToServer(dt);//将dt中的所有行复制到SqlBulkCopy

    65020发布于 2018-09-19
  • 来自专栏架构师

    程序员过关斩将--快速迁移10亿级数据

    classId = classId }, commandType: System.Data.CommandType.Text); } } //SqlBulkCopy var connection = Config.GetConnection(Config.TargetDBStr); using (var sbc = new SqlBulkCopy 合理的设置SqlBulkCopy参数 4.

    73810发布于 2019-07-23
  • 来自专栏java架构师

    SQL 写入调优

    也可以使用SqlBulkCopy来实现大数据量的写入 var sw = Stopwatch.StartNew(); //// Creates a database connection. using ( ConfigurationManager.ConnectionStrings["SQLCONN2"].ToString())) { conn.Open(); using (var bulkCopy = new SqlBulkCopy cmd.Parameters.Add(param); cmd.ExecuteNonQuery(); } } sw.Stop(); 现在,我们重新执行写入操作发现写入效率与SqlBulkCopy

    1.3K60发布于 2018-04-16
  • 来自专栏跟着阿笨一起玩NET

    NPOI简述与运用

    conn.BeginTransaction(); DataTable dt = NPOIHSSFHelper.Import(filePath, sheetNO); SqlBulkCopy blkCopy = new SqlBulkCopy(conn, SqlBulkCopyOptions.Default, tran) { BatchSize = dt.Rows.Count, DestinationTableName

    1.1K10发布于 2018-09-19
  • 来自专栏历史专栏

    【愚公系列】2023年03月 MES生产制造执行系统-002.Dapper和EFCode的使用

    Connection.ConnectionString = DBServerProvider.GetConnectionString(dbKeyName); } using (SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(Connection.ConnectionString, sqlBulkCopyOptions)) { sqlBulkCopy.DestinationTableName = tableName; sqlBulkCopy.BatchSize = table.Rows.Count for (int i = 0; i < table.Columns.Count; i++) { sqlBulkCopy.ColumnMappings.Add (table.Columns[i].ColumnName, table.Columns[i].ColumnName); } sqlBulkCopy.WriteToServer

    1.8K30编辑于 2023-03-16
  • 来自专栏Vincent-yuan

    MSSQL数据批量插入优化详细

    ; using (SqlConnection conn = new SqlConnection(ConnStr)) { SqlBulkCopy bulkCopy = new SqlBulkCopy(conn); bulkCopy.BulkCopyTimeout = 0; bulkCopy.DestinationTableName

    1.6K21发布于 2020-04-10
  • 来自专栏跟着阿笨一起玩NET

    C# 几种数据库的大数据批量插入

    void Insert(DataTable dataTable, int batchSize = 10000); } 一、SqlServer数据批量插入 SqlServer的批量插入很简单,使用SqlBulkCopy ServiceContext.Database.Provider.GetService<ISyntaxProvider>(), dataTable.TableName); using (var bulk = new SqlBulkCopy

    3.2K21发布于 2018-09-20
  • 来自专栏哲学驱动设计

    Rafy 框架 - 大批量导入实体

    Sql Server 对于 Sql Server 数据库的批量保存: 批量新增数据,是使用 System.Data.SqlClient.SqlBulkCopy 来实现的。

    1.8K80发布于 2018-01-29
  • 来自专栏逸鹏说道

    我是如何在SQLServer中处理每天四亿三千万记录的

    connectionString, string desTable, DataTable dt, int batchSize = 500) { using (var sbc = new SqlBulkCopy 总结 如何在SQLServer中处理亿万级别的数据(历史数据),可以按以下方面进行: 去掉表的所有索引 用SqlBulkCopy进行插入 分表或者分区,减少每个表的数据总量 在某个表完全写完之后再建立索引

    2.2K130发布于 2018-04-11
  • 来自专栏Java架构师进阶

    是如何在SQLServer中处理每天四亿三千万记录的

    string connectionString, string desTable, DataTable dt, int batchSize = 500) { using (var sbc = new SqlBulkCopy 总结 如何在SQLServer中处理亿万级别的数据(历史数据),可以按以下方面进行: 去掉表的所有索引 用SqlBulkCopy进行插入 分表或者分区,减少每个表的数据总量 在某个表完全写完之后再建立索引

    1.2K50发布于 2019-05-15
  • 来自专栏DotNet NB && CloudNative

    .NET周刊【10月第3期 2024-10-20】

    如何使用 SqlBulkCopy 和 CsvHelper 高效地将大型 CSV 导入到 SQL Server https://zenn.dev/nuits_jp/articles/2024-10-15- csv-sqlbulkcopy-csvhelper 了解如何有效地将大型 CSV 数据导入 SQL Server。

    1.9K10编辑于 2024-11-23
领券