agregar columna mientras se copian datos en sql

sql sqlbulkcopy sqldatareader sql-server-2008

Pregunta

Estoy usando SqlBulkCopy para insertar de forma masiva algunos registros de una tabla en otra tabla. La consulta está utilizando un SqlDataReader para obtener los datos. La única diferencia que importa (además del orden de columna que se maneja en las asignaciones) entre las tablas es que la tabla de destino tiene una columna de fecha en la que se debe agregar la fecha actual. Esta fecha no está en la tabla de origen. ¿Cómo puedo agregar esto al proceso actual que está funcionando bien, menos esto?

El código de trabajo actual se ve así:

SqlCommand cmd = new SqlCommand("SELECT * from dbo.source", cn);
            SqlDataReader rdr = cmd.ExecuteReader();                

            using (SqlBulkCopy copy = new SqlBulkCopy(cn))
            {
                copy.ColumnMappings.Add(0, 0);
                copy.ColumnMappings.Add(1, 2);
                copy.ColumnMappings.Add(3, 3);
                copy.ColumnMappings.Add(2, 4);
                copy.ColumnMappings.Add(5, 5);
                copy.ColumnMappings.Add(14, 6);
                copy.DestinationTableName = "destination";
                copy.WriteToServer(rdr);
            }

El DB es sql 2008 ENT.

Respuesta aceptada

Puede simplemente agregarlo para que lo devuelva su SELECT:

SELECT *, GETDATE() AS CurrentDate from dbo.source

Y luego simplemente agregue otro ColumnMapping para ello.



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué