[英]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.