Voglio importare i dati dal database in formato .csv e voglio esportare .csv nel mio database SQL server / Oracle. Sto usando ASP.NET Core RC 1 in questo momento. Ho esaminato la classe SQLBulkCopy ma il problema è che non è stato portato su ASP.NET Core.
Qualcuno può dirmi come posso farlo o c'è qualche altro pacchetto nuget compatibile disponibile (con ASP.NET Core)?
.NET Standard 2.0 ora supporta molte delle librerie framework .NET, il che significa che la classe SqlBulkCopy può essere utilizzata con ASP.NET Core. Dataset, Datatables e SQLBulkCopy svolgeranno il lavoro per l'inserimento di massa. Scopri ulteriori dettagli su .NETStandard 2.0 qui .
Microsoft ha aggiunto SqlBulkCopy a .NET Core, quindi è possibile aggiungerlo come parte del pacchetto NuGet System.Data.SqlClient
. Ho scelto di utilizzare FastMember di @MarcGravell per gestire il lavoro di mappatura dei miei dati, ma non è necessario.
FastMember acquisirà una serie di parametri e una raccolta di oggetti e estrae i valori dagli oggetti mappati alla tua raccolta di parametri. Semplifica davvero il codice.
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;
}