Stiamo importando un file CSV con CSVReader
quindi utilizzando SqlBulkCopy
per inserire tali dati in SQL Server. Questo codice funziona per noi ed è molto semplice, ma ci chiediamo se esiste un metodo più veloce (alcuni dei nostri file hanno 100000 righe) che non risulterebbero troppo complessi?Modo rapido e semplice per importare CSV su SQL Server
SqlConnection conn = new SqlConnection(connectionString);
conn.Open();
SqlTransaction transaction = conn.BeginTransaction();
try
{
using (TextReader reader = File.OpenText(sourceFileLocation))
{
CsvReader csv = new CsvReader(reader, true);
SqlBulkCopy copy = new SqlBulkCopy(conn, SqlBulkCopyOptions.KeepIdentity, transaction);
copy.DestinationTableName = reportType.ToString();
copy.WriteToServer(csv);
transaction.Commit();
}
}
catch (Exception ex)
{
transaction.Rollback();
success = false;
SendFileImportErrorEmail(Path.GetFileName(sourceFileLocation), ex.Message);
}
finally
{
conn.Close();
}
Dubito che troverete qualcosa più veloce di questo. Quanto tempo ci vuole ora? Quanto tempo ti aspetti che prenda? –
4 minuti con un file CSV con 180.000 righe come dati di test. Rispetto a 1,5 minuti con SSIS, che preferiremmo non utilizzare. –
Se le prestazioni sono critiche nello scenario di integrazione, raccomanderei SSIS anche se ha dei nodi ... Su SQL Server 2012+ è anche possibile sviluppare SSDT tramite Visual Studio. –