Cómo insertar un valor constante en una columna usando ASP.Net SqlBulkCopy

asp.net bulkinsert sqlbulkcopy

Pregunta

En el siguiente código, estoy intentando insertar los registros de Excel en la tabla de la base de datos, pero una columna adicional no se pasa a través de Excel, que se debe completar con un valor constante (foreach loop con un valor diferente) asignado desde la página solicitada. .

string CONSTANTVALUE="Test";
bulkCopy.DestinationTableName = "TABLE NAME";
bulkCopy.ColumnMappings.Add("TABLECOLUMN1", "EXCELCOLUMN1");
bulkCopy.ColumnMappings.Add("TABLECOLUMN2", "EXCELCOLUMN2");
bulkCopy.ColumnMappings.Add("TABLECOLUMN3", CONSTANTVALUE);
bulkCopy.WriteToServer(dr);

Pero el código no funciona. ¿Algunas ideas?

Respuesta aceptada

Supongo que su dr es un lector de algún tipo. ¿Cómo se rellena? Puede ser posible seleccionar un valor predeterminado en una columna y mapear eso. Algo como esto (sintaxis sql)

select 
    EXCELCOLUMN1, 
    EXCELCOLUMN2, 
    'ConstantValueFromPage' as EXCELCUSTOM 
from 
    sheet1

Luego tener:

bulkCopy.ColumnMappings.Add("TABLECOLUMN3", "EXCELCUSTOM");

HTH


Respuesta popular

Puedes hacerlo cambiando el texto de tu comando. Como a continuación

string CONSTANTVALUE="Test";
OleDbCommand command=new OleDbCommand("select *,"+CONSTANTVALUE+" as [ConstantCol] from [sheet$]",ObleDbCon);
using (DbDataReader dr = command.ExecuteReader())
{
bulkCopy.DestinationTableName = "TABLE NAME";
bulkCopy.ColumnMappings.Add("TABLECOLUMN1", "EXCELCOLUMN1");
bulkCopy.ColumnMappings.Add("TABLECOLUMN2", "EXCELCOLUMN2");
bulkCopy.ColumnMappings.Add("TABLECOLUMN3", "ConstantCol");
bulkCopy.WriteToServer(dr);
}


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é