我想以.csv格式从数据库导入数据,并希望将.csv导出到我的SQL Server / Oracle数据库中。我目前正在使用ASP.NET Core RC 1。我查看了SQLBulkCopy类,但问题是它没有移植到ASP.NET Core。
有人可以告诉我该怎么做或者是否有其他兼容的nuget包(使用ASP.NET Core)?
答案 0 :(得分:3)
Microsoft已将SqlBulkCopy添加到.NET Core,因此您可以将其作为System.Data.SqlClient
NuGet包的一部分引入。我选择使用@MarcGravell的FastMember来处理我的数据映射工作,但你不必这样做。
FastMember将获取一组参数和一组对象,并从您的对象中提取映射到参数集合的值。真的简化了代码。
private async Task OutputPerformanceDataToStorage(List<PerformanceData> dataToSave)
{
var storageParameters = new[]
{
nameof(PerformanceData.PerformanceId),
nameof(PerformanceData.IPAddress),
nameof(PerformanceData.ControllerName),
nameof(PerformanceData.ActionName),
nameof(PerformanceData.ActionParameters),
nameof(PerformanceData.ViewPath),
nameof(PerformanceData.TotalRequestTimeInMilliseconds),
nameof(PerformanceData.RequestStartedTimestamp),
nameof(PerformanceData.RequestEndedTimestamp),
nameof(PerformanceData.CreatedDateTime),
};
var sqlCopy = new SqlBulkCopy(this.connectionString, SqlBulkCopyOptions.Default);
sqlCopy.DestinationTableName = "[Performance]";
using (var reader = ObjectReader.Create(dataToSave, storageParameters))
{
await sqlCopy.WriteToServerAsync(reader);
}
}
internal class PerformanceData
{
public Guid PerformanceId;
public double TotalRequestTimeInMilliseconds;
public long RequestStartedTimestamp;
public long RequestEndedTimestamp;
public string IPAddress;
public string ControllerName;
public string ActionName;
public string ViewPath;
public string ActionParameters;
public List<string> ActionParametersList;
public DateTime CreatedDateTime;
}
答案 1 :(得分:1)
.NET Standard 2.0现在支持许多.NET框架库,这意味着SqlBulkCopy类可以与ASP.NET Core一起使用。数据集,数据表和SQLBulkCopy将完成批量插入的工作。有关.NETStandard 2.0 here的更多详细信息。