public static int BulkInsert(DataTable table)
{
int insertCount = 0;
try
{
if (string.IsNullOrEmpty(table.TableName)) throw new Exception("请给DataTable的TableName属性附上表名称");
if (table.Rows.Count == 0) return 0;
string tmpPath = Directory.GetCurrentDirectory() + "\\UpTemp";
if (!Directory.Exists(tmpPath))
Directory.CreateDirectory(tmpPath);
tmpPath = Path.Combine(tmpPath, "Temp.csv");//csv文件临时目录
string csv = SystemExtensions.DataTableToCsv(table);
File.WriteAllText(tmpPath, csv);
var columns = table.Columns.Cast<DataColumn>().Select(_columns => _columns.ColumnName).ToList();
using (MySqlConnection conn = new MySqlConnection(connection))
{
try
{
MySqlBulkLoader bulk = new MySqlBulkLoader(conn)
{
FieldTerminator = ",",
FieldQuotationCharacter = '"',
EscapeCharacter = '"',
LineTerminator = "\r\n",
FileName = tmpPath,
NumberOfLinesToSkip = 0,
TableName = table.TableName,
};
bulk.Columns.AddRange(columns);//根据标题列对应插入
insertCount = bulk.Load();
}
catch (MySqlException ex)
{
throw ex;
}
}
File.Delete(tmpPath);
}
catch (Exception ex)
{
throw ex;
}
return insertCount;
}