[英]Insert ExcelSheet data into MySql Database using c#
在使用 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();
MySqlBulkLoader
使用与SqlBulkCopy
完全不同的方式来执行批量插入/更新:它利用基于文件的输入(例如 TXT 或 CSV)而不是直接使用DataTable
实例。 作为一种解决方法,您可以将DataTable
导出到 CSV 文件并通过MySqlBulkLoader
读取内容,如下例所示:
1) 数据表转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)
参考:
使用 MySqlBulkLoader 类 (5.13) - MySQL Docs
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.