使用带有列映射的数据表更新/插入SQL表

时间:2014-04-07 08:42:51

标签: c# sql insert datatable sqlbulkcopy

我想要将数据的批量副本从一个数据库复制到另一个数据库。它需要足够动态,以便当源数据库的用户创建新字段时,目标端的变化很小(我的结尾!)。

我使用 sqlbulkcopy 函数完成了这项工作,使用在单独的表中设置的列映射,这样如果创建了任何新内容,我需要做的就是创建新字段并设置映射(没有代码或存储过程更改):

foreach (var mapping in columnMapping)
{
    var split = mapping.Split(new[] { ',' });
    sbc.ColumnMappings.Add(split.First(), split.Last());
}

try
{
    sbc.WriteToServer(sourcedatatable);
}

但是,现在的要求已经改变了 我需要在本表的其他列中保留更多来自其他地方的数据,这意味着我无法截断整个表并使用sqlbulkcopy编写所有内容。现在,我需要能够插入新记录更新当前记录的相关字段,但仍然足够动态,如果用户创建新字段,我将不需要更改代码。

有没有人有任何想法?

1 个答案:

答案 0 :(得分:0)

评论来自mdisibio的原始问题 - 看起来SQL MERGE语句就是答案。