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 ...
随机推荐
- 我JAVA修炼之路
今天起,我会不定期更新我的java修炼之路, 2017.7.10,星期一 我参见了河南青云的培训班,这一天是我们的开班典礼. 我会不定期的总结我的学习笔记,大家喜欢的可以看看,不喜勿喷. 写代码: 1 ...
- ABAP,学习不一样的EXCEL导出----XLSX Workbench
这个工具是在查找ABAP导出EXCEL资料的时候发现,是国外的一位大牛自己开发的开源项目,体验了一番,确实很好用. 工具特点: No ABAP Programming Skills are requi ...
- 部署DNS服务
DNS,全称Domain Name System,即域名解析系统. DNS帮助用户在互联网上寻找路径.在互联网上的每一个计算机都拥有一个唯一的地址,称作"IP地址"(即互联网协议地 ...
- (转)Java里的堆(heap)栈(stack)和方法区(method)(精华帖,多读读)
[color=red][/color]<一> 基础数据类型直接在栈空间分配, 方法的形式参数,直接在栈空间分配,当方法调用完成后从栈空间回收. 引用数据类型,需要用new来创建,既在栈 ...
- markdown 常用格式API
摘要 记录常用格式 参考:https://www.zybuluo.com/mdeditor 1. 标题 写法: 文字前加 #, 几个# 表示几级标题 标题下方增加 = 或 - 效果 标题1 标题2 标 ...
- git 安装 和 基本操作
林纳斯的小故事 感兴趣的同学可以自己百度一下 版本控制常用svn git @@@svn 1 搭建环境 server:visualSVN Serverserver port: https 默认443ht ...
- 灵玖软件NLPIRParser智能文本聚类
随着互联网的迅猛发展,信息的爆炸式增加,信息超载问题变的越来越严重,信息的更新率也越来越高,用户在信息海洋里查找信息就像大海捞针一样.搜索引擎服务应运而生,在一定程度上满足了用户查找信息的需要.然而互 ...
- teamviewer试用期到期解决
1.命令行输入:%appdata%删除teamviewer文件夹2.命令行输入:regedit删除teamviewer文件夹3.卸载tv4.控制面板->设备管理器->网络适配器->f ...
- 开源作业调度工具实现开源的Datax、Sqoop、Kettle等ETL工具的作业批量自动化调度
1.阿里开源软件:DataX DataX 是一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL.Oracle等).HDFS.Hive.ODPS.HBase.FTP等各种异构数据源之间稳 ...
- linux 两个查找工具 locate,find详解
linux 中有很多查找工具,今天主要讲解locate,find两个工具. 1.locate (1)查询系统上预建的文件索引数据库 /var/lib/mlocate/mlocate.db 注意:如果这 ...