如何大容量插入具有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,使其与第一次插入的员工正确对齐?我读取数据的方式是将员工和地址一起读取,所以插入所有员工,然后返回并插入所有地址有点痛苦。

我想知道是否有一个优雅的解决方案?

如何大容量插入具有Identity关系的两个数据表

我不太确定这有多优雅,我想这取决于你自己。我假设您在员工数据中有一个唯一的字段或字段组合。

如果在服务器上创建临时表,则可以大容量插入包含所有员工数据以及员工地址信息的数据。

从暂存表中,插入员工数据。然后从暂存表加入employee表(以获得新分配的id)并插入employees地址数据。

最后放下暂存表。

一切都是以设定为导向的,所以你应该有好的表现。