ASP.Net Core应用程序 - 读取CSV文件,并循环遍历每条记录以将其添加到数据库。
using (var reader = new StringReader(publicScheduleData))
using (var csvReader = new CsvReader(reader))
{
csvReader.Configuration.BadDataFound = null;
csvReader.Configuration.MissingFieldFound = null;
csvReader.Configuration.HeaderValidated = null;
var records = csvReader.GetRecords<Qualys>();
foreach (var item in records)
{
_context.Qualys.Add(item);
await _context.SaveChangesAsync();
}
}
我知道您可以直接在SSMS中导入,但这必须是最终用户函数,才能从Web表单更新sql数据。
上面的方法似乎很慢 - 每秒写几条记录。我的CSV文件有90,000多行,26列。
有没有更快的方法将这些记录添加到数据库?
谢谢,马克
如果将csv插入到数据表中,然后将其插入数据库,则应该可以获得更快的插入时间,因为您一次不执行单个插入操作。这个article可能会让你在路上。如果文章中的方法不适合您,我仍然建议将csv数据插入到数据表中,然后使用用户定义的表将数据作为参数插入到存储过程中,然后您可以执行并插入从用户定义的表中选择。
较新版本的.NET Core支持SQLBulkCopy库。此库将允许您使用来自其他源的数据有效地批量加载SQL Server表。
这是一个跟随https://www.c-sharpcorner.com/article/bulk-upload-in-net-core/的例子
using (var sqlCopy = new SqlBulkCopy(connString))
{
sqlCopy.DestinationTableName = "[Products]";
sqlCopy.BatchSize = 500;
using (var reader = ObjectReader.Create(prodlist, copyParameters))
{
sqlCopy.WriteToServer(reader);
}
}