c# 使用SqlBulkCopy 提高大数据插入数据库速度

自己得一点总结:
  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

转载于:https://www.cnblogs.com/dansediao/p/5482467.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值