C# 数据批量插入到数据库SqlBulkCopy(源数据类型:List<T> Or DataTable)
/*_____________________ List<T>类型数据 To Sql_______________________________*/
/// <summary>
/// Sqlbulkcopies the specified SMS.批量插入到数据库
/// </summary>
/// <param name="data">list类型数据.</param>
/// <param name="sqlconn">数据库连接字符串.</param>
private void Sqlbulkcopy(List<T> data, SqlConnection sqlconn)
{
#region 待处理数据初始化处理
List<PropertyInfo> pList = new List<PropertyInfo>();//创建属性的集合
DataTable dt = new DataTable();
//把所有的public属性加入到集合 并添加DataTable的列
Array.ForEach<PropertyInfo>(typeof(T).GetProperties(), p => { pList.Add(p); dt.Columns.Add(p.Name, p.PropertyType); }); //获得反射的入口(typeof()) //要对 array 的每个元素执行的 System.Action。
foreach (var item in sms)
{
DataRow row = dt.NewRow(); //创建一个DataRow实例
pList.ForEach(p => row[p.Name] = p.GetValue(item, null)); //给row 赋值
dt.Rows.Add(row); //加入到DataTable
}
#endregion
#region 批量插入数据库 SqlBulkCopy声明及参数设置
SqlBulkCopy bulk = new SqlBulkCopy(sqlconn.ToString(), SqlBulkCopyOptions.UseInternalTransaction) { DestinationTableName = "TableName" /*设置数据库目标表名称*/, BatchSize = dt.Rows.Count /*每一批次中的行数*/ };
bulk.ColumnMappings.Add("ID", "ID"); //设置数据源中的列和目标表中的列之间的映射关系
bulk.ColumnMappings.Add("name", "name");//ColumnMappings.Add("源数据表列名称", "目标表数据列名称");
bulk.ColumnMappings.Add("sex", "sex");
bulk.ColumnMappings.Add("phone", "phone");
.
.
.
#endregion
bulk.WriteToServer(dt);
if (bulk != null)
{
bulk.Close();
}
}
/*_____________________ DataTable类型数据 To Sql_______________________________*/
/// <summary>
/// Sqlbulkcopies the specified SMS.批量插入到数据库
/// </summary>
/// <param name="dt">DataTable类型带插入数据</param>
/// <param name="sqlconn">数据库连接字符串</param>
private void Sqlbulkcopy(DataTable dt, SqlConnection sqlconn)
{
#region 批量插入数据库 SqlBulkCopy声明及参数设置
SqlBulkCopy bulk = new SqlBulkCopy(sqlconn.ToString(),
SqlBulkCopyOptions.UseInternalTransaction) { DestinationTableName =
"ENG_FailSendSMS" /*设置数据库目标表名称*/, BatchSize = dt.Rows.Count /*每一批次中的行数*/
};
bulk.ColumnMappings.Add("ID", "ID"); //设置数据源中的列和目标表中的列之间的映射关系
bulk.ColumnMappings.Add("name", "name");//ColumnMappings.Add("源数据表列名称", "目标表数据列名称");
bulk.ColumnMappings.Add("sex", "sex");
bulk.ColumnMappings.Add("phone", "phone");
.
.
.
#endregion
bulk.WriteToServer(dt);
if (bulk != null)
{
bulk.Close();
}
}
C# 数据批量插入到数据库SqlBulkCopy(源数据类型:List<T> Or DataTable)的更多相关文章
- C#中几种数据库的大数据批量插入
C#语言中对SqlServer.Oracle.SQLite和MySql中的数据批量插入是支持的,不过Oracle需要使用Orace.DataAccess驱动. IProvider里有一个用于实现批量插 ...
- C#:几种数据库的大数据批量插入
在之前只知道SqlServer支持数据批量插入,殊不知道Oracle.SQLite和MySql也是支持的,不过Oracle需要使用Orace.DataAccess驱动,今天就贴出几种数据库的批量插入解 ...
- C#:几种数据库的大数据批量插入(转)
在之前只知道SqlServer支持数据批量插入,殊不知道Oracle.SQLite和MySql也是支持的,不过Oracle需要使用Orace.DataAccess驱动,今天就贴出几种数据库的批量插入解 ...
- C#:几种数据库的大数据批量插入 - faib
在之前只知道SqlServer支持数据批量插入,殊不知道Oracle.SQLite和MySql也是支持的,不过Oracle需要使用Orace.DataAccess驱动,今天就贴出几种数据库的批量插入解 ...
- c#几种数据库的大数据批量插入(SqlServer、Oracle、SQLite和MySql)
这篇文章主要介绍了c#几种数据库的大数据批量插入(SqlServer.Oracle.SQLite和MySql),需要的朋友可以了解一下. 在之前只知道SqlServer支持数据批量插入,殊不知道Ora ...
- PHP如何将多维数组中的数据批量插入数据库?
PHP将多维数组中的数据批量插入到数据库中,顾名思义,需要用循环来插入. 1.循环insert into 语句,逐渐查询 <?php /* www.qSyz.net */ @mysql_conn ...
- 使用事务操作SQLite数据批量插入,提高数据批量写入速度,源码讲解
SQLite数据库作为一般单机版软件的数据库,是非常优秀的,我目前单机版的软件产品线基本上全部替换Access作为优选的数据库了,在开发过程中,有时候需要批量写入数据的情况,发现传统的插入数据模式非常 ...
- C# 批量插入表SQLSERVER SqlBulkCopy往数据库中批量插入数据
#region 帮助实例:SQL 批量插入数据 多种方法 /// <summary> /// SqlBulkCopy往数据库中批量插入数据 /// </summary> /// ...
- SqlBulkCopy将DataTable中的数据批量插入数据库中
#region 使用SqlBulkCopy将DataTable中的数据批量插入数据库中 /// <summary> /// 注意:DataTable中的列需要与数据库表中的列完全一致.// ...
随机推荐
- iOS 设置UILabel的行间距并自适应高度
NSString *contentStr = @"总以为,在最初的地方,有一个最原来的我,就也会有一个最原来的你"; UILabel *tempLabel = [[UILabel ...
- UITableView cell复用出错问题 页面滑动卡顿问题 & 各杂七杂八问题
UITableView 的cell 复用机制节省了内存,但是有时对于多变的自定义cell,重用时会出现界面出错(例如复用出错,出现cell混乱重影).滑动卡顿等问题,这里只简单敲下几点复用出错时的解决 ...
- 尝试解析js面试题(一)【转发】
解析: 1.Foo.getName(); //2 1)结果执行的是Foo对象的一个叫做getName()的属性,而1.4.5中的getName都是作为函数存在,所以可以排除1.4.5 2)剩下两个中, ...
- 幼儿园的 selenium
from selenium import webdriver *固定开头 b=webdriver.Firefox() *打开火狐浏览器 browser. ...
- HTTP Method 之 Post VS. Get
引言 WebAPI 现在非常火的轻量服务框架,因其使用得使用了Http协议,并且具备了可协商内容(生成不同内容格式)等优势,所以在互联网业务中被广泛使用. 那作为HTTP最常用的两个方法Get和Pos ...
- kubernetes部署Fluentd+Elasticsearch+kibana 日志收集系统
一.介绍 1. Fluentd 是一个开源收集事件和日志系统,用与各node节点日志数据的收集.处理等等.详细介绍移步-->官方地址:http://fluentd.org/ 2. Elastic ...
- Lite Your Android English
https://litesuits.com/ 一些话 简约的背后,往往是复杂 还原面向对象应有的体验,让应对繁多业务所增加的,并未增加. 展开设计理念 Lite每个项目仅几十KB,这相当于你项目中 ...
- ngx_http_fastcgi_module模块.md
ngx_http_fastcgi_module ngx_http_fastcgi_module模块允许将请求传递到FastCGI服务器. fastcgi_bind Syntax: fastcgi_bi ...
- NPOI操作EXCEL(二)——大量不同模板时设计方式
上一篇文章介绍了一些NPOI的基础接口,我们现在就来看看具体怎么用NPOI来解析一个EXCEL. 博主现在有这么一堆excel需要解析数据入库: 当然这只是员工的简要模板,还有很多其他的模板.我们可以 ...
- chpasswd-批量修改用户密码
批量修改用户密码 工作原理: 从系统的标准输入读入用户的名称和口令,并利用这些信息来更新系统上已存在的用户的口令 语法: :# echo 用户名:密码 | chpasswd :# chpasswd & ...