1

In the solution with MS SQL the code looks like below. Now I try to do something similar for MySQL.I tried using MysqlBulkLoader but it is not working

SqlBulkCopy objbulk = new SqlBulkCopy(connect);
    //MySqlBulkLoader objbulk = new MySqlBulkLoader(connect);

    //assigning Destination table name
    objbulk.DestinationTableName = "barter_proposals";
    //Mapping Table column
    objbulk.ColumnMappings.Add("company", "company");
    objbulk.ColumnMappings.Add("website_a", "website_a");
    objbulk.ColumnMappings.Add("email_id", "email_id");
    objbulk.ColumnMappings.Add("contact_name", "contact_name");
    //inserting Datatable Records to DataBase
    connect.Open();
    objbulk.WriteToServer(Exceldt);
    connect.Close();

1 Answer 1

1

MySqlBulkLoader uses pretty different way from SqlBulkCopy to perform bulk insert/update: it utilizes file-based input (e.g. TXT or CSV) instead directly using DataTable instance. As a workaround, you can export DataTable to a CSV file and read the contents by MySqlBulkLoader like examples below:

1) DataTable to CSV Conversion

using (var sw = new StreamWriter("/path/to/source/file.csv", false))
{
    // assume Exceldt is your 'DataTable' object
    int colCount = Exceldt.Columns.Count;
    foreach (DataRow row in Exceldt.Rows)
    {
        for (int i = 0; i < colCount; i++)
        {
            if (!Convert.IsDBNull(row[i]))
            {
                sw.Write(row[i].ToString());
            }
            if (i < colCount - 1)
            {
                sw.Write(",");
            }
        }
        sw.Write(sw.NewLine);
    }
}

2) MySqlBulkLoader Bulk Insert from CSV File

// creating bulk loader instance
MySqlBulkLoader objbulk = new MySqlBulkLoader(connect);
objbulk.TableName = "barter_proposals";
objbulk.Timeout = 600; // set command timeout
objbulk.FieldTerminator = ",";
objbulk.LineTerminator = "\r\n";
objbulk.FileName = "/path/to/source/file.csv";
objbulk.NumberOfLinesToSkip = 1; // adjust this depending on CSV file headers

objbulk.Load();

// delete the CSV file here (optional)

References:

Using the MySqlBulkLoader Class (5.13) - MySQL Docs

MySQL - Bulk data import using .NET Connector MySqlBulkLoader Class

MySqlBulkLoader with Column Mapping?

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.