Tengo una aplicación de servicio de Windows que recibe un flujo de datos con el siguiente formatomillones inserción masiva de SQL Server de registro
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|õÄ
Estos datos vienen en millones de filas y en secuencia 00000002....00198562
y tengo que analizar y insertarlos de acuerdo con la secuencia en una tabla de base de datos.
Mi pregunta es, ¿cuál es la mejor manera (la más eficaz) para insertar estos datos en mi base de datos? Intenté usar un método simple para abrir un objeto SqlConnection, luego generar una cadena de script SQL insert y luego ejecutar el script usando el objeto SqlCommand, sin embargo, este método lleva demasiado tiempo.
leí que puedo utilizar SQL BULK INSERT pero tiene que leer de un archivo de texto, es posible que este escenario de usar BULK INSERT? (Nunca lo he usado antes).
Gracias
actualización: Soy consciente de SqlBulkCopy pero me obliga a tener DataTable primera, esto es bueno para el rendimiento? Si es posible, quiero insertar directamente desde mi fuente de datos a SQL Server sin tener que usar en la memoria DataTable.
¿Qué quiere decir con "insertarlos según la secuencia"? ¿Por qué importa el orden en que insertas las filas? Se almacenan en el orden especificado en el [índice agrupado] (http://msdn.microsoft.com/en-us/library/aa933131.aspx), independientemente del orden de inserción. –