我有一个c#.net应用程序,我需要使用sql bulkcopy将应用程序的默认值插入sql server。
示例:
SqlColumnMapping("src_col1","dest_col1");
SqlColumnMapping("src_col2","dest_col2");
在“dest_col3”中,我想插入默认值。
我如何在app中映射它以及如何在数据库中插入默认值?
由于
答案 0 :(得分:1)
提示:不要使用SqlBulkCopy - 那件事有很多问题。大多数锁定,默认值也在游戏中。
对临时表使用它;)
这就是我的工作。
SqlBulkCopy锁定问题:
在几年前的ETL情景中,我们受到严重打击。
最重要的是,正如您所发现的那样,您无法使用默认值。
我实际上已经将这些东西完全隔离在一个单独的批量加载器类中,而且我只是在允许这个UPDATE行的过程中(通过从临时表中合并)。
答案 1 :(得分:1)
这是你如何做到的。创建一个与desitination表具有相同结构的DataTable对象,除了删除具有默认值的列。如果在Visual Studio中使用DataSet Designer,则可以从TableAdapter中删除具有默认值的列。
使用名为“connection”的SqlConnection和名为“table”的DataTable对象,您的代码将类似于:
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connection))
{
foreach (System.Data.DataColumn c in table.Columns)
{
bulkCopy.ColumnMappings.Add(c.ColumnName, c.ColumnName);
}
bulkCopy.DestinationTableName = table.TableName;
bulkCopy.WriteToServer(table);
}
同样,为了使用此方法,您必须确保您的DataTable对象不包含您要使用默认值插入的列。