ho un'applicazione di servizio Windows che riceve un flusso di dati con il seguente formatoBulk milioni di inserimento di SQL Server di registrazione
IDX|20120512|075659|00000002|3|AALI |Astra Agro Lestari Tbk. |0|ORDI_PREOPEN|12 |00000001550.00|00000001291.67|00001574745000|00001574745000|00500|XDS1BXO1| |00001574745000|ݤ
IDX|20120512|075659|00000022|3|ALMI |Alumindo Light Metal Industry Tbk. |0|ORDI |33 |00000001300.00|00000001300.00|00000308000000|00000308000000|00500|--U3---2| |00000308000000|õÄ
Questi dati è disponibile in milioni di righe e in sequenza 00000002....00198562
e devo analizzare e inserirli secondo la sequenza in una tabella di database.
La mia domanda è, qual è il modo migliore (il più efficace) per inserire questi dati nel mio database? Ho provato a utilizzare un metodo semplice per aprire un oggetto SqlConnection, quindi generare una stringa di script di inserimento SQL e quindi eseguire lo script utilizzando l'oggetto SqlCommand, tuttavia questo metodo richiede troppo tempo.
Ho letto che posso usare Sql BULK INSERT ma deve leggere da un file di testo, è possibile che questo scenario utilizzi BULK INSERT? (Non l'ho mai usato prima).
Grazie
aggiornamento: Sono consapevole di SqlBulkCopy ma mi richiede di avere DataTable prima, questo è un bene per le prestazioni? Se possibile, desidero inserire direttamente dalla mia origine dati a SQL Server senza dover utilizzare in memoria DataTable.
Cosa intendi con "inserirli secondo la sequenza"? Perché è importante quale ordine si inseriscono le righe? Sono memorizzati nell'ordine specificato in [indice cluster] (http://msdn.microsoft.com/en-us/library/aa933131.aspx), indipendentemente dall'ordine di inserimento. –