将常量值设置为SqlBulkCopy中的某些列

时间:2016-03-23 09:43:47

标签: c# csv mapping sqlbulkcopy

我正在尝试将数据从“csv”文件传输到SQL数据库。是否可以按默认值映射某些字段,而这些字段在“csv”文件中不存在? 如下所示: bulkCopy.ColumnMappings.Add("Destenition_column_name", "constant_value");

感谢您提前!

2 个答案:

答案 0 :(得分:3)

What about setting a default column BEFORE populating the DataTable?

var returnTable = new DataTable();
returnTable.Columns.Add("Constant_Column_Name").DefaultValue = "Constant_Value";

If you then add rows each row will always have the specified default value for this column without explicitly setting it.

答案 1 :(得分:0)

如果您自己创建DataTable,Anytoe的答案可能会很有用。但是,当您从某种库方法获取dataTable时,可能会出现这种情况,因此您将无法使用默认值。对于这种情况,我找到了以下解决方案:

var dt = await  GetDataTable();
dt.Columns.Add("ImportFileId", typeof(long), importFileId.ToString());

这是一个名为“表达式列”的功能。例如,您可以将此解决方案与具有“ .dataset()”方法的ExcelDataReader库一起使用。

如果您不想使用“表达式列”,总是可以遍历所有行:

 foreach (DataRow dr in dt.Rows)
 {
   dr["ImportFileId"] = importFileId.ToString();
 }

信息:https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/dataset-datatable-dataview/creating-expression-columns