Carga de muchos datos hacia SQL Server, desde C#
Este mes me enfrenté a la carga de grandes volúmenes de datos desde C# hacia SQL Server. Millones de registros de un solo envión y en una sola transacción. Primero intenté usar Bulk Insert , pero resultó muy lento para el requerimiento. Luego intenté con Data Tables y SQL Bulk Copy , pero se reventó por memoria. Encontré la solución en una herramienta que nunca había utilizado: yield . Esta es la versión simplificada de un método que lee archivos por bloques de 1000 registros y genera Data Tables "bajo demanda" usando yield : protected IEnumerable < DataTable > BuildDataTableByBatches ( StreamReader reader , DataColumn [] columns ) { var dt = new DataTable (); foreach ( var col in columns ) { dt . Columns . Add ( col . ColumnName , col . DataType ); ...