gpt4 book ai didi

c# - SqlBulkCopy 插入顺序

转载 作者:行者123 更新时间:2023-11-30 17:43:19 27 4
gpt4 key购买 nike

要将数据从一个数据库复制到具有相同架构的不同服务器中的另一个数据库,我计划使用 C sharp 库中的 SqlBulkCopy 类。 SqlBulkCopy 在插入记录时是否会保持与数据表中相同的顺序?

示例:id 是标识列。

服务器 1,数据库 1

TableA
id name
1 name10
2 name20
3 name30
4 name40

服务器 2,数据库 1

TableA
id name
1 name1
2 name2
3 name3
4 name4
..........
..........
5000 name22
5001 name33
  • 第一步:var dt = select * from server1.dbo.TableA order by id;
  • 第 2 步:SQL 批量复制到服务器 2 bulkCopy.WriteToServer(dt);
  • 第 3 步:var resultDt = 根据 id desc 从 server2.dbo.TableA order 中选择前 4 个 id。 因为我们知道插入的记录数,所以我使用“前 4 个”。
  • 第四步:resultDt.DefaultView.Sort = "id asc";

问题:resultDt 中的 id 是否代表所有行的 dt 中的 id? IE,。

5002 from server2 = 1 from server1
5003 from server2 = 2 from server1
5004 from server2 = 3 from server1
5005 from server2 = 4 from server1

注意:为了举例,我给出了较少的记录。实际表包含数千条记录。

最佳答案

看起来批量插入时不能保证顺序。所以我在目标表中添加了一个临时 id 列。流程如下:

Step1: var dt = select *, id as tempId from server1.dbo.TableA order by id;
Step2: SQL bulk copy into server2 bulkCopy.WriteToServer(dt);
Step3: var resultDt = select top 4 id, tempId from server2.dbo.TableA order by id desc. Since we know the number of records we inserted I am using "top 4".

现在 id 将是 server2 生成的新 id,tempId 将是 server1 的 id。问题解决:)

关于c# - SqlBulkCopy 插入顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31140065/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com