public DbBulkCopy(ProviderType providerType,
                          string connectionString,
                          int bulkcopyTimeout = 1800,
                          int batchSize       = 102400,
                          BulkCopyOptions dbBulkCopyOption = BulkCopyOptions.KeepIdentity)
            : this(providerType, connectionString)
        {
            this.BatchSize        = batchSize;
            this.BulkCopyTimeout  = bulkcopyTimeout;
            this.DbBulkCopyOption = dbBulkCopyOption;

            if (ProviderName == ProviderType.SqlServer)
            {
                if (sqlBulkCopy == null || this.ConnectionString != ConnectionString)
                {
                    sqlBulkCopy = new SqlBulk(ConnectionString, BulkCopyTimeout, DbBulkCopyOption);
                }
            }
            else if (ProviderName == ProviderType.DB2)
            {
                if (db2BulkCopy == null || this.ConnectionString != ConnectionString)
                {
                    //db2BulkCopy = new Db2Bulk(ConnectionString, BulkCopyTimeout, DbBulkCopyOption);
                    throw new Exception("暂时不支持DB2数据库");
                }
            }
            else if (ProviderName == ProviderType.Oracle)
            {
                if (oracleBulkCopy == null || this.ConnectionString != ConnectionString)
                {
                    oracleBulkCopy = new OracleBulk(ConnectionString, BulkCopyTimeout, DbBulkCopyOption);
                }
            }
            else if (ProviderName == ProviderType.MySql)
            {
                mySqlBulkCopy = new MysqlBulk(ConnectionString, BulkCopyTimeout);
            }
        }
        public DbBulkCopy(ProviderType providerType,
                          string connectionString,
                          IDbConnection dbConnection,
                          int bulkcopyTimeout = 1800,
                          int batchSize       = 102400,
                          BulkCopyOptions dbBulkCopyOption = BulkCopyOptions.KeepIdentity,
                          bool isTransaction = true)
            : this(providerType, connectionString)
        {
            this.BatchSize        = batchSize;
            this.BulkCopyTimeout  = bulkcopyTimeout;
            this.DbBulkCopyOption = dbBulkCopyOption;
            this.IsTransaction    = isTransaction;
            this.dbConn           = dbConnection;

            if (ProviderName == ProviderType.SqlServer)
            {
                if (sqlBulkCopy != null || this.ConnectionString != connectionString)
                {
                    if (sqlBulkCopy != null)
                    {
                        sqlBulkCopy.Dispose();
                    }
                }
                if (dbConn.State != ConnectionState.Open)
                {
                    dbConn.Open();
                }

                if (IsTransaction)
                {
                    dbTrans = dbConn.BeginTransaction();
                }
                sqlBulkCopy = new SqlBulk(dbConn, dbTrans, BulkCopyTimeout, DbBulkCopyOption);
            }
            else if (ProviderName == ProviderType.DB2)
            {
                //if (db2BulkCopy != null || this.ConnectionString != connectionString)
                //{
                //    if (db2BulkCopy != null)
                //        db2BulkCopy.Dispose();
                //}

                //if (dbConn.State != ConnectionState.Open) dbConn.Open();

                //if (isTransaction)
                //{
                //    dbTrans = dbConn.BeginTransaction();
                //}
                //db2BulkCopy = new Db2Bulk(dbConn, BulkCopyTimeout, DbBulkCopyOption);

                throw new Exception("暂时不支持DB2数据库");
            }
            else if (ProviderName == ProviderType.Oracle)
            {
                if (oracleBulkCopy != null || this.ConnectionString != connectionString)
                {
                    if (oracleBulkCopy != null)
                    {
                        oracleBulkCopy.Dispose();
                    }
                }

                if (dbConn.State != ConnectionState.Open)
                {
                    dbConn.Open();
                }

                if (isTransaction)
                {
                    dbTrans = dbConn.BeginTransaction();
                }

                oracleBulkCopy = new OracleBulk(dbConn, BulkCopyTimeout, DbBulkCopyOption);
            }
            else if (ProviderName == ProviderType.MySql)
            {
                if (mySqlBulkCopy != null || this.ConnectionString != connectionString)
                {
                    if (mySqlBulkCopy != null)
                    {
                        mySqlBulkCopy.Dispose();
                    }
                }
                mySqlBulkCopy = new MysqlBulk(ConnectionString, BulkCopyTimeout);
            }
        }