MySql.Data.MySqlClient.MySqlBulkLoader.LoadAsync C# (CSharp) Method

LoadAsync() public method

Async version of Load
public LoadAsync ( ) : Task
return Task
    public Task<int> LoadAsync()
    {
      return Task.Factory.StartNew(() =>
      {
        return Load();
      });
    }
    #endregion

Usage Example

コード例 #1
0
        private async ValueTask WriteToServerAsync(IOBehavior ioBehavior, CancellationToken cancellationToken)
#endif
        {
            var tableName = DestinationTableName ?? throw new InvalidOperationException("DestinationTableName must be set before calling WriteToServer");

            var bulkLoader = new MySqlBulkLoader(m_connection)
            {
                CharacterSet            = "utf8mb4",
                EscapeCharacter         = '\\',
                FieldQuotationCharacter = '\0',
                FieldTerminator         = "\t",
                LinePrefix          = null,
                LineTerminator      = "\n",
                Local               = true,
                NumberOfLinesToSkip = 0,
                Source              = this,
                TableName           = QuoteIdentifier(tableName),
                Timeout             = BulkCopyTimeout,
            };

            var closeConnection = false;

            if (m_connection.State != ConnectionState.Open)
            {
                m_connection.Open();
                closeConnection = true;
            }

            // if no user-supplied column mappings, compute them from the destination schema
            if (ColumnMappings.Count == 0)
            {
                using var cmd    = new MySqlCommand("select * from " + QuoteIdentifier(tableName) + ";", m_connection, m_transaction);
                using var reader = (MySqlDataReader) await cmd.ExecuteReaderAsync(CommandBehavior.SchemaOnly, ioBehavior, cancellationToken).ConfigureAwait(false);

                var schema = reader.GetColumnSchema();
                for (var i = 0; i < schema.Count; i++)
                {
                    if (schema[i].DataTypeName == "BIT")
                    {
                        ColumnMappings.Add(new MySqlBulkCopyColumnMapping(i, $"@col{i}", $"`{reader.GetName(i)}` = CAST(@col{i} AS UNSIGNED)"));
                    }
                    else if (schema[i].DataTypeName == "YEAR")
                    {
                        // the current code can't distinguish between 0 = 0000 and 0 = 2000
                        throw new NotSupportedException("'YEAR' columns are not supported by MySqlBulkLoader.");
                    }
                    else
                    {
                        var type = schema[i].DataType;
                        if (type == typeof(byte[]) || (type == typeof(Guid) && (m_connection.GuidFormat == MySqlGuidFormat.Binary16 || m_connection.GuidFormat == MySqlGuidFormat.LittleEndianBinary16 || m_connection.GuidFormat == MySqlGuidFormat.TimeSwapBinary16)))
                        {
                            ColumnMappings.Add(new MySqlBulkCopyColumnMapping(i, $"@col{i}", $"`{reader.GetName(i)}` = UNHEX(@col{i})"));
                        }
                        else
                        {
                            ColumnMappings.Add(new MySqlBulkCopyColumnMapping(i, reader.GetName(i)));
                        }
                    }
                }
            }

            // set columns and expressions from the column mappings
            for (var i = 0; i < m_valuesEnumerator !.FieldCount; i++)
            {
                var columnMapping = ColumnMappings.FirstOrDefault(x => x.SourceOrdinal == i);
                if (columnMapping is null)
                {
                    bulkLoader.Columns.Add("@`\uE002\bignore`");
                }
                else
                {
                    if (columnMapping.DestinationColumn.Length == 0)
                    {
                        throw new InvalidOperationException("MySqlBulkCopyColumnMapping.DestinationName is not set.");
                    }
                    if (columnMapping.DestinationColumn[0] == '@')
                    {
                        bulkLoader.Columns.Add(columnMapping.DestinationColumn);
                    }
                    else
                    {
                        bulkLoader.Columns.Add(QuoteIdentifier(columnMapping.DestinationColumn));
                    }
                    if (columnMapping.Expression is object)
                    {
                        bulkLoader.Expressions.Add(columnMapping.Expression);
                    }
                }
            }

            await bulkLoader.LoadAsync(ioBehavior, cancellationToken).ConfigureAwait(false);

            if (closeConnection)
            {
                m_connection.Close();
            }

#if !NETSTANDARD2_1 && !NETCOREAPP3_0
            return(default);
All Usage Examples Of MySql.Data.MySqlClient.MySqlBulkLoader::LoadAsync