之前做Sqlserver做批量插入(SqlBulkCopy),感觉很方便啊,想着Mysql应该也有这东西,然后网上很多。
组装datatable,转成csv,保存到临时文件,然后用这个文件来入库。
测试代码:
public static int BulkInsert(MySqlConnection conn, DataTable table)
{
var Columns = table.Columns.Cast<DataColumn>().Select(a => a.ColumnName).ToList();
MySqlBulkLoader BulkLoader = new MySqlBulkLoader(conn)
{
FieldTerminator = ",",
FieldQuotationCharacter = '"',
EscapeCharacter = '"',
LineTerminator = "\r\n",
FileName = @"D:\temp\1.tmp",
NumberOfLinesToSkip = 0,
TableName = table.TableName
};
BulkLoader.Columns.AddRange(Columns);
return BulkLoader.Load();
}
看着很简单,但是有个问题,一直提示找不到文件D:\temp\1.tmp(代码和数据库非同一台电脑),之前用过Sqlserver用文件写命令导入数据过,然后想起文件必须是在数据库服务器上。然后把文件D:\temp\1.tmp复制到本地测试服务器上,的确是这样,必须在数据库服务器上。还是没Sqlserver直接把Datatable写入数据库好用,求好用快速的批量插入。。。