我想要将数据的批量副本从一个数据库复制到另一个数据库。它需要足够动态,以便当源数据库的用户创建新字段时,目标端的变化很小(我的结尾!)。
我使用 sqlbulkcopy 函数完成了这项工作,使用在单独的表中设置的列映射,这样如果创建了任何新内容,我需要做的就是创建新字段并设置映射(没有代码或存储过程更改):
foreach (var mapping in columnMapping)
{
var split = mapping.Split(new[] { ',' });
sbc.ColumnMappings.Add(split.First(), split.Last());
}
try
{
sbc.WriteToServer(sourcedatatable);
}
但是,现在的要求已经改变了 我需要在本表的其他列中保留更多来自其他地方的数据,这意味着我无法截断整个表并使用sqlbulkcopy编写所有内容。现在,我需要能够插入新记录或更新当前记录的相关字段,但仍然足够动态,如果用户创建新字段,我将不需要更改代码。
有没有人有任何想法?
答案 0 :(得分:0)
评论来自mdisibio的原始问题 - 看起来SQL MERGE语句就是答案。