private void UploadData(TableData table)
        {
            using (var subConn = new SqlConnection(ConnectionString))
            {
                subConn.Open();
                if (!string.IsNullOrEmpty(CreateDatabaseName))
                {
                    subConn.ChangeDatabase(CreateDatabaseName);
                }

                new SqlCommand(string.Format("TRUNCATE TABLE {0}", GetStagingTableName(table)), subConn)
                {
                    CommandTimeout = Timeout
                }.ExecuteNonQuery();

                using (var tran = subConn.BeginTransaction())
                {
                    using (var bcp = new SqlBulkCopy(subConn, SqlBulkCopyOptions.TableLock, tran))
                    {
                        bcp.BatchSize            = 5000;
                        bcp.EnableStreaming      = true;
                        bcp.BulkCopyTimeout      = Timeout;
                        bcp.DestinationTableName = GetStagingTableName(table);
                        bcp.WriteToServer(table.CreateReader());
                    }
                    tran.Commit();
                }
            }
        }
        private void UploadData(TableData table)
        {
            using (var subConn = new SqlConnection(ConnectionString))
            {
                subConn.Open();
                if (!string.IsNullOrEmpty(CreateDatabaseName))
                {
                    subConn.ChangeDatabase(CreateDatabaseName);
                }

                new SqlCommand(string.Format("TRUNCATE TABLE {0}", GetStagingTableName(table)), subConn)
                {
                    CommandTimeout = Timeout
                }.ExecuteNonQuery();

                using (var tran = subConn.BeginTransaction())
                {
                    using (var bcp = new SqlBulkCopy(subConn, SqlBulkCopyOptions.TableLock, tran))
                    {
                        bcp.BatchSize = 5000;
                        bcp.EnableStreaming = true;
                        bcp.BulkCopyTimeout = Timeout;
                        bcp.DestinationTableName = GetStagingTableName(table);
                        bcp.WriteToServer(table.CreateReader());
                    }
                    tran.Commit();
                }
            }
        }