【插入】通过SqlBulkCopy快速插入大量数据

通过SqlBulkCopy快速插入大量数据

/// <summary>
/// 海量数据插入方法
/// </summary>
/// <param name="connectionString">目标连接字符</param>
/// <param name="TableName">目标表</param>
/// <param name="dt">源数据</param>
private void SqlBulkCopyByDatatable(string connectionString, string TableName, DataTable dt)
{
    using (SqlConnection conn = new SqlConnection(connectionString))
    {
        using (SqlBulkCopy sqlbulkcopy = new SqlBulkCopy(connectionString, SqlBulkCopyOptions.UseInternalTransaction))
        {
            try
            {
                sqlbulkcopy.DestinationTableName = TableName;
                //一次批量的插入的数据量
                sqlbulkcopy.BatchSize = 1000;
                //超时之前操作完成所允许的秒数,如果超时则事务不会提交 ,数据将回滚,所有已复制的行都会从目标表中移除
                sqlbulkcopy.BulkCopyTimeout = 60;
                //设定NotifyAfter 属性,以便在每插入10000 条数据时,呼叫相应事件。
                sqlbulkcopy.NotifyAfter = 10000;
                for (int i = 0; i < dt.Columns.Count; i++)
                {
                    sqlbulkcopy.ColumnMappings.Add(dt.Columns[i].ColumnName, dt.Columns[i].ColumnName);
                }
                sqlbulkcopy.WriteToServer(dt);
            }
            catch (System.Exception ex)
            {
                throw ex;
            }
        }
    }
}

 

相关引用:

SqlConnection:

 

SqlBulkCopy:

 

参考资料:

https://www.cnblogs.com/cnki/p/5250226.html

posted @ 2019-12-12 11:37  黑涩小豆  阅读(160)  评论(0)    收藏  举报