• 使用SqlBulkCopy实现数据的批量入库


    datatable数据集中的字段与数据库中的字段一一对应

    #region 使用SqlBulkCopy将DataTable中的数据批量插入数据库中  
            /// <summary>  
            /// 使用SqlBulkCopy将DataTable中的数据批量插入数据库中  
            /// </summary>  
            /// <param name="strTableName">数据库中对应的表名</param>  
            /// <param name="dtData">数据集</param>  
            public static int InsertCopy(this SqlConnection conn, string strTableName, DataTable dtData, DbTransaction transaction = null)
            {
                SqlBulkCopy sqlRevdBulkCopy = transaction == null ?
                    new SqlBulkCopy(conn) :
                    new SqlBulkCopy(conn, SqlBulkCopyOptions.Default, (SqlTransaction)transaction);
    
                sqlRevdBulkCopy.BulkCopyTimeout = 8000;
                try
                {
                    if (conn.State == ConnectionState.Closed) { conn.Open(); }
                    sqlRevdBulkCopy.DestinationTableName = strTableName;//数据库中对应的表名
                    sqlRevdBulkCopy.NotifyAfter = dtData.Rows.Count;//有几行数据
                    sqlRevdBulkCopy.WriteToServer(dtData);//数据导入数据库
    
                    return dtData.Rows.Count;
                }
                catch (Exception ex)
                {
                    Wathet.Log.Error(ex.ToSimple("DoSql.InsertCopy,表 [" + strTableName + "] 数据搬迁异常 SqlBulkCopyInsert "));
                    return -1;
                }
                finally
                {
                    sqlRevdBulkCopy.Close();
    
                    if (transaction == null && conn.State == ConnectionState.Open)
                    {
                        conn.Close();
                    }
                }
            }
            #endregion
  • 相关阅读:
    Java-LockSupport
    Kafka Eagle 安装
    Kafka shell
    python pip 使用
    Kafka 集群部署
    Kafka 概述
    DockerFile 简单使用
    《深入理解Java虚拟机》读书笔记
    linux安装redis
    Java多线程基础知识例子
  • 原文地址:https://www.cnblogs.com/dujian123/p/11097852.html
Copyright © 2020-2023  润新知