SQLBulk问题集
2022/5/22 10:51:05
本文主要是介绍SQLBulk问题集,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
项目中操作数据库用到这个sqlBulk
场景1:碰到数据批量插入(先加入概念吧)
sqlBC.ColumnMappings.Add(dt的列名,数据库字段);
public static string InsertTable(IDbConnection dbConn, DataTable dt, string TabelName,IEnumerable<ColumnMapInfo> fieldsList=null) { string result = "success"; //声明数据库连接 //using (SqlConnection conn = (SqlConnection)dbConn) SqlConnection conn = (SqlConnection)dbConn; { conn.Open(); //声明SqlBulkCopy ,using释放非托管资源 using (SqlBulkCopy sqlBC = new SqlBulkCopy(conn)) { sqlBC.BulkCopyTimeout = 900;//15分钟 //一次批量的插入的数据量 sqlBC.BatchSize = 10000; //超时之前操作完成所允许的秒数,如果超时则事务不会提交 ,数据将回滚,所有已复制的行都会从目标表中移除 sqlBC.BulkCopyTimeout = 1000; //設定 NotifyAfter 属性,以便在每插入10000 条数据时,呼叫相应事件。 //sqlBC.NotifyAfter = 10000; //sqlBC.SqlRowsCopied += new SqlRowsCopiedEventHandler(OnSqlRowsCopied); //设置要批量写入的表 sqlBC.DestinationTableName = TabelName; if (fieldsList!=null && fieldsList.Count()>0) { foreach (var m in fieldsList) sqlBC.ColumnMappings.Add(dt的列名,数据库字段); } //try { //批量写入 sqlBC.WriteToServer(dt); } catch (Exception ex) { result = ex.Message; } } conn.Close(); } return result; }
场景2:
给定的 columnmapping 与源或目标中的任意列均不匹配
结果:这个我查询得最久,额,就是列名和数据库不一致(列名的排列顺序无关)
注:这里可以使用SQL Server Profieler 进行跟踪,但是发现只有直接插入的才有可以查看的数据(异常的都是出现在还没组成sql语句执行前的我看不懂的)
感谢:https://bbs.csdn.net/topics/310091635/
https://blog.csdn.net/u010476739/article/details/123335909
这篇关于SQLBulk问题集的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-15鸿蒙生态设备数量超8亿台
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?