【问题标题】:Insert ExcelSheet data into MySql Database using c#使用 c# 将 ExcelSheet 数据插入 MySql 数据库
【发布时间】:2017-10-24 07:34:51
【问题描述】:

在使用 MS SQL 的解决方案中,代码如下所示。 现在我尝试为 MySQL 做类似的事情。我尝试使用 MysqlBulkLoader 但它不起作用

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();

【问题讨论】:

    标签: c# mysql


    【解决方案1】:

    MySqlBulkLoader 使用与SqlBulkCopy 完全不同的方式来执行批量插入/更新:它利用基于文件的输入(例如 TXT 或 CSV)而不是直接使用 DataTable 实例。作为一种解决方法,您可以将 DataTable 导出到 CSV 文件并通过 MySqlBulkLoader 读取内容,如下例所示:

    1) DataTable 到 CSV 的转换

    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 从 CSV 文件批量插入

    // 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)
    

    参考资料:

    Using the MySqlBulkLoader Class (5.13) - MySQL Docs

    MySQL - Bulk data import using .NET Connector MySqlBulkLoader Class

    MySqlBulkLoader with Column Mapping?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-22
      • 1970-01-01
      • 2014-04-17
      • 2015-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多