Entradas

Mostrando las entradas de mayo, 2021

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 );   ...