c# 使用SqlBulkCopy 提高大数据插入数据库速度
2016-05-11 16:47
806 查看
自己得一点总结:
1.BulkCopy采用的是插入方式,不是覆盖方式(原数据不动,在原数据的后面复制上dataTable中的内容)
2.自增的字段不用赋值
3.数据库字段名和dataTable列名可以不一样,对应关系用bulkcopy.ColumnMappings.Add("author", "author"); 关联
另外拓展一下SqlBulkCopyOptions枚举
1.BulkCopy采用的是插入方式,不是覆盖方式(原数据不动,在原数据的后面复制上dataTable中的内容)
2.自增的字段不用赋值
3.数据库字段名和dataTable列名可以不一样,对应关系用bulkcopy.ColumnMappings.Add("author", "author"); 关联
public void SaveTable(DataTable dtTable) { SqlBulkCopy sbc = new SqlBulkCopy(DbHelperSQL.connectionString, SqlBulkCopyOptions.UseInternalTransaction); sbc.BulkCopyTimeout = 5000; try { sbc.DestinationTableName = "FAST_Temp"; sbc.WriteToServer(dtTable); } catch (Exception ex) { //处理异常 } finally { //sqlcmd.Clone(); //srcConnection.Close(); //desConnection.Close(); } }
另外拓展一下SqlBulkCopyOptions枚举
成员名称 | 说明 | |
---|---|---|
AllowEncryptedValueModifications | 允许加密值修改。 | |
CheckConstraints | 在插入数据的同时检查约束。 默认情况下,不检查约束。 | |
Default | 使用所有选项的默认值。 | |
FireTriggers | 如果指定,则使服务器激发插入触发器,从而使行插入数据库。 | |
KeepIdentity | 保留源标识值。 未指定标识值时,该值由目标指派。 | |
KeepNulls | 在目标表中保留 null 值,而不考虑默认值的设置。 如果未指定,由默认值替换 null 值(适用时)。 | |
TableLock | 获取批量复制操作持续时间的批量更新锁定。 如果未指定,则使用行锁定。 | |
UseInternalTransaction | 如果指定,批量复制操作的每一批都将在事务内发生。 如果指示该选项,并且还向构造函数提供SqlTransaction 对象,则发生 ArgumentException。 |
相关文章推荐
- 大数据Java基础——移位运算的真实剖析 (一)
- The dependency `BaiduMapKit` is not used in any concrete target
- EyeKey诚邀您莅临CCTC大会B11展位体验不一样的人脸识别!
- PipeMapRed.waitOutputThreads(): subprocess failed with code N
- Rails ActiveRecord的default_scope的坑
- paint进阶
- The table '#sql-fb5_190a57' is full Operation failed
- git Disconnected:No supported authentication methods available问题解决
- ibatis中的动态SQL:isNotNull,isPropertyAvailable,isNotEmpty,isGreaterThan等标签用法
- Canvas+Paint绘制路径,文字与图形
- CDISC SDTM AE domain学习笔记 - 1
- Tsinsen A1320 Painting 【最大权匹配】【树形DP】
- mysql大数据分表后查询
- 发现大量的TIME_WAIT解决办法
- 实用简介:MQTT协议及其在物联网中的应用
- 汇编学习第四课之main函数反汇编
- 大数据交易平台
- ActivityViewController 使用AirDrop分享
- STM32单片机实现中断后不继续向下执行而是返回到main函数
- CDISC SDTM EC/EX domain 学习笔记 - 4