如何大容量插入具有Identity关系的两个数据表
本文关键字:数据表 两个 关系 大容量 插入 Identity | 更新日期: 2023-09-27 18:29:34
我正在使用SQLBulkCopy,在伪代码中我这样做:
- 制作新员工数据表
- 制作新的EmployeeAddress数据表
- 填充employee表,但不指定employeeId作为其标识
- 填充EmployeeAddress数据表,但它包含employeeId字段
- 通过执行两次操作并更改表名,将两个数据表都写入数据库:
using (var bulk = new SqlBulkCopy(connectionString, SqlBulkCopyOptions.KeepIdentity & SqlBulkCopyOptions.KeepNulls))
{
bulk.BatchSize = 25;
bulk.DestinationTableName = "Employee";
bulk.WriteToServer(employeeDataTable);
}
如何在第二个数据表中指定employeeId,使其与第一次插入的员工正确对齐?我读取数据的方式是将员工和地址一起读取,所以插入所有员工,然后返回并插入所有地址有点痛苦。
我想知道是否有一个优雅的解决方案?
我不太确定这有多优雅,我想这取决于你自己。我假设您在员工数据中有一个唯一的字段或字段组合。
如果在服务器上创建临时表,则可以大容量插入包含所有员工数据以及员工地址信息的数据。
从暂存表中,插入员工数据。然后从暂存表加入employee表(以获得新分配的id)并插入employees地址数据。
最后放下暂存表。
一切都是以设定为导向的,所以你应该有好的表现。