簡體   English   中英

批量插入現有表-僅插入新行

[英]Bulk insert into existing table - only insert new rows

我有一種方法可以從數據庫中現有的表中獲取數據作為DataTable,我想向該數據表中添加新行,然后使用SQLBulkCopy僅批量插入新添加的行,而不是已經存在的行,我是否需要配置這將以某種方式還是只會添加新行?

var myDataTable = GetExistingTableDataAsDataTable();

//將新行添加到myDataTable .....

using (var conn = new SqlConnection("Connection string"))
    {
        conn.Open();

        using (var bulk = new SqlBulkCopy(conn))
        {
            bulk.DestinationTableName = myDataTable.TableName;
            bulk.BatchSize = 1000;

            foreach (var column in myDataTable.Columns)
            {
                bulk.ColumnMappings.Add(column.ToString(), column.ToString());   
            }

            bulk.WriteToServer(myDataTable); //Do i need to add DataRowState.Added here?
            bulk.Close();
        }

        conn.Close();
    }

使用臨時表bulk insert 然后,運行查詢以復制新行,並使用where子句過濾掉重復項:

insert  YourTable
        (id, col1, col2, col3, ...)
select  id
,       col1
,       col2
,       col3
,       ...
from    TempTable t
where   not exists
        (
        select  *
        from    YourTable yt
        where   yt.id = t.id
        )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM