【问题标题】:Best way to migrate increment ID and convert to Guid迁移增量 ID 并转换为 Guid 的最佳方法
【发布时间】:2017-02-03 15:09:21
【问题描述】:

我有两个关于迁移 SQL 数据的问题:

1.将增量 ID 从 db1.table 迁移到 db2.table(不同的数据库)

例子:

我的噩梦是我必须将这 3 个表的数据从一个数据库移动到另一个数据库。两个数据库中的id不相同。

目前,我的最佳做法是在迁移 GuestRoom 表之后,我将使用带有 Vlookup 的 Excel 来使用新 ID 更新表 Booking 中的所有 RoomId 和之后迁移所有这些修改过的数据。

问题:有没有更好的方法来度过这场噩梦?

请注意,在这个例子中,只提到了 3 个表,但在我的实际情况中,连接在一起的表不少于 5 个......

2。从 IncrementId 迁移到 Guid

对于新项目设计,我使用唯一的 Guid 而不是传统的增量 ID 作为表的主键。

问题:将旧的 SQL Server 表从递增的 Id 迁移到 Guid 的最佳做法是什么?

编辑:我使用的是 SQL Server 2012,甚至可以使用实体框架来访问我的数据库。所以只要有帮助,SQL 脚本或 C# 编程代码都是有用的

【问题讨论】:

  • @marc_s 感谢您编辑我的问题。你对我的问题有什么建议吗?
  • 除了说:不要这样做! - 不,抱歉。我认为在您的 SQL Server 表中将 GUID 作为 PK 是一个非常糟糕的主意 - 但您似乎绝对致力于沿着这条路走下去,所以我只是闭嘴,让您自己体验一下.....
  • 第一个问题是客户需要的,所以我无法避免。但是对于我的第二个问题,我正在阅读您关于 GUID 的帖子:stackoverflow.com/a/11938495/3133518。还是谢谢你
  • 我会: 1. 向模型添加 guid 并将它们注释为 id。 2. 迁移,确保它有效。 3.删除id,将guid字段命名为id。 4. 迁移,确保它有效。完成。

标签: c# asp.net sql-server excel entity-framework


【解决方案1】:

您可以向目标数据库添加一个额外的列作为 int ExternalID(或类似的)并将原始 int 标识符复制到该列中。然后,您的迁移过程需要参考该列。

【讨论】:

    猜你喜欢
    • 2018-04-16
    • 2021-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-13
    • 1970-01-01
    • 2017-03-21
    相关资源
    最近更新 更多