我目前通过数据表将数据库的一部分作为XML导出,并且还需要能够再次重新导入数据。
我一直关注http://www.jarloo.com/c-bulk-upsert-to-sql-server-tutorial/为了批量导入数据,但似乎在导出并重新导入临时表后,id值正在发生变化。
我怀疑它们被丢弃并且临时表上的自动增量(使用 "从tblJob中选择前#0到#import;")导致ID损坏,就像我编辑XML文件并重新导入它更新错误的行一样
答案 0 :(得分:1)
您可以让SqlBulkCopy知道您希望使用SqlBulkCopyOptions
保留源数据中的标识值,如下所示:
using (SqlBulkCopy bulk = new SqlBulkCopy(con, SqlBulkCopyOptions.KeepIdentity))
{
bulk.DestinationTableName = "#Prices";
bulk.WriteToServer(table);
}
答案 1 :(得分:0)
为了在重新导入时保持身份完整:
首先,确保原始记录不再存在(因为我假设您的身份也是主键)
第二,
set identity_insert on [table]
import your records
set identity_insert off [table]
如果您正在执行批量插入任务,那么在...映射下还有一个选项? to"启用身份插入"