之前做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寫入數據庫好用,求好用快速的批量插入。。。