SqlBulkCopy 批量insert
1.获取要插入的数据datatable
- /// <summary>
- /// 从FMS取银行信息
- /// </summary>
- /// <returns></returns>
- public void GetBankInfoFromFMS()
- {
- try
- {
- string connectionStr = Tool.GetConnectionStrings("BPMConnection");
- BudgetServerClient client = new BudgetServerClient();
- BankInfoRequest request = new BankInfoRequest();
- request.PageIndex = ;
- request.PageSize = int.MaxValue;
- var response = client.QueryBankInfo(request);
- if (response != null && response.total > && response.data != null && response.data.Count > )
- {
- //先删除
- string sql = "delete from BPM_ExternalSupplier_BankInfo";
- SqlHelper.ExecuteNonQuery(connectionStr, sql);
- //准备要批量插入的数据
- DataTable table = new DataTable();
- table.Columns.Add("ID");
- table.Columns["ID"].DataType = typeof(Guid);
- table.Columns.Add("Pkid");
- table.Columns.Add("BankName");
- table.Columns.Add("BankNum");
- table.Columns.Add("Province");
- table.Columns.Add("Citye");
- table.Columns.Add("CreateUser");
- table.Columns.Add("CreateTime");
- table.Columns.Add("ModifiedUser");
- table.Columns.Add("ModifiedTime");
- table.Columns.Add("IsDeleted");
- table.Columns["IsDeleted"].DataType = typeof(bool);
- foreach (var item in response.data)
- {
- DataRow row = table.NewRow();
- row["ID"] = Guid.NewGuid();
- row["Pkid"] = item.Pkid;
- row["BankName"] = item.BankName;
- row["BankNum"] = item.BankNum;
- row["Province"] = item.Province;
- row["Citye"] = item.Citye;
- row["CreateUser"] = "xuguanghui";
- row["CreateTime"] = DateTime.Now;
- row["ModifiedUser"] = "xuguanghui";
- row["ModifiedTime"] = DateTime.Now;
- row["IsDeleted"] = ;
- table.Rows.Add(row);
- }
- SqlHelper.BulkCopyData(table, connectionStr, "BPM_ExternalSupplier_BankInfo");
- }
- }
- catch (Exception ex)
- {
- Tool.SendErrorNotication("系统错误通知", "从FMS取银行信息GetBankInfoFromFMS方法错误,错误消息:" + ex.Message);
- }
- }
2.调用SqlBulkCopy
- /// <summary>
- /// 批量写入
- /// </summary>
- /// <param name="sourceTable">数据源</param>
- /// <param name="connStr">数据库连接串</param>
- /// <param name="destinationTableName">目标表</param>
- public static void BulkCopyData(DataTable sourceTable, string connStr, string destinationTableName)
- {
- SqlBulkCopy sbc = new SqlBulkCopy(connStr, SqlBulkCopyOptions.UseInternalTransaction);
- sbc.BulkCopyTimeout = ;
- try
- {
- sbc.DestinationTableName = destinationTableName;
- foreach (DataColumn dc in sourceTable.Columns)
- {
- sbc.ColumnMappings.Add(dc.ColumnName, dc.ColumnName);
- }
- sbc.WriteToServer(sourceTable);
- }
- catch
- {
- //The SqlBulkCopy object is automatically closed at the end of the using block.
- //可以不写,会自动关闭
- sbc.Close();
- }
- finally
- {
- //The SqlBulkCopy object is automatically closed at the end of the using block.
- //可以不写,会自动关闭
- sbc.Close();
- }
- }
SqlBulkCopy 批量insert的更多相关文章
- sql 中的Bulk和C# 中的SqlBulkCopy批量插入数据 ( 回顾 and 粗谈 )
通常,我们会对于一个文本文件数据导入到数据库中,不多说,上代码. 首先,表结构如下. 其次,在我当前D盘中有个文本文件名为2.txt的文件. 在数据库中,可以这样通过一句代码插入. Bulk in ...
- EntityFramework批量Insert
先说解决办法:使用SqlBulkCopy. 然后问题是:这个和EF没有半点关系,还要拼DataSet. 再是解决办法:你可以自己封装一个,也可以使用人家写好的 EntityFramework.Bulk ...
- 【ADO.NET】SqlBulkCopy批量添加DataTable
使用事务和SqlBulkCopy批量插入数据 SqlBulkCopy是.NET Framework 2.0新增的类,位于命名空间System.Data.SqlClient下,主要提供把其他数据源的数据 ...
- C#使用SqlTransaction事务回滚与SqlBulkCopy批量插入数据
C#中批量处理数据,有时候因为一条记录导致整个批量处理失败.这时候肯能会导致数据不全等问题,这时候我们可以使用SqlTransaction来进行事务回滚,即是要么全部成功要么全部不成功.如下代码 // ...
- sql server 使用SqlBulkCopy批量插入数据库
sql server sqlbulkcopy 批量数据插入数据库使用的是System.Data.SqlClient中的 SqlBulkCopy批量数据插入数据库 sql server 使用SqlBul ...
- java批量insert入mysql数据库
mysql 批量insert语句为 insert into Table_(col1,col2...) values(val11,val12...),(val11,val12...),...; java ...
- SqlBulkCopy 批量复制数据到数据表
使用 SqlBulkCopy 类只能向 SQL Server 表写入数据.但是,数据源不限于 SQL Server:可以使用任何数据源,只要数据可加载到 DataTable 实例或可使用 IDataR ...
- JDBC批量Insert深度优化(有事务)
环境: MySQL 5.1 RedHat Linux AS 5 JavaSE 1.5 DbConnectionBroker 微型数据库连接池 测试的方案: 执行10万次Insert语句,使用不同方 ...
- SqlBulkCopy批量插入数据时,不执行触发器和约束的解决方法
原文:SqlBulkCopy批量插入数据时,不执行触发器和约束的解决方法 在new SqlBulkCopy对象的时候,设置一下SqlBulkCopyOptions选项即可,按位或运算 SqlBulkC ...
随机推荐
- js验证身份证号码
function IdentityCodeValid(code) { var city={11:"北京",12:"天津",13:"河北",1 ...
- HDU 5616 Jam's balance(DP)
题目网址:http://acm.hdu.edu.cn/showproblem.php?pid=5616 题目: Jam's balance Time Limit: 2000/1000 MS (Java ...
- java基础06 IO流
IO用于在设备间进行数据传输的操作. Java IO流类图结构: IO流分类 字节流: InputStream FileInputStream BufferedInputStream Output ...
- angularjs-1.3代码学习 模块
花了点时间,阅读了下angularjs的源码.本次先从模块化开始. angular可以通过module的api来实现前端代码的模块化管理.跟define类似.但不具备异步加载脚本的功能.先从最基本的m ...
- Tomcat启动中的一些问题
(a)在eclipse中启动tomcat,在控制台加载的配置却是其他项目的,有时候也不是自己工作空间里的? 出现的一个原因是:在我tomcat的webapp目录下,我放了一个其他项目的war包,在to ...
- JDBC&&c3p0、事务、批处理、多线程 于一体的经典秘方QueryRunner
目录: 基础篇_功能各自回顾 JDBC基础代码回顾(使用JdbcUtils工具简化) c3p0数据库连接池的使用(使用JdbcUtils工具简化) 大数据的插入(使用c3p0+JdbcUtils工具简 ...
- STF,docker学习资料整理
- LeetCode-Best Time to Buy and Sell Stock III[dp]
Say you have an array for which the ith element is the price of a given stock on day i. Design an al ...
- cesium 获取点击点的高程
var picklHandler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);picklHandler .setInputAct ...
- Javascript数组(1)--基本属性及方法
数组Array是Javascript语言中非常重要的两种引用类型数据之一,另外一种为对象Object.Array的数据模型可分为两种进行存储:堆栈结构.队列结构. 昨天,确切说是前天了,去和大学同学见 ...