【问题标题】:Disable foreign keys or pay attention to creation order禁用外键或注意创建顺序
【发布时间】:2020-03-10 14:08:16
【问题描述】:

我目前正在开发一个 java 应用程序,用于将 Oracle 数据库的数据迁移到我使用 liquibase 迁移的等效结构化 SQL Server 数据库。现在也很难管理迁移所有外键,因为许多外键都依赖于其他外键,所以我想到了两种解决方案:

  1. 在迁移之前禁用所有外键,然后再次启用它们
  2. 注意以正确的顺序创建外键,以便它们以相同的方式创建

第二种方法对我来说听起来更困难,但在某种程度上更安全​​,而第一种方法听起来更容易,但可能会出错或容易出错。实际上,我不确定哪一个会起作用。哪种方式比较好?

【问题讨论】:

    标签: sql sql-server database oracle migration


    【解决方案1】:

    我的理解是:使用 liquibase,您可以将表结构从 Oracle 迁移到 SQLServer。要迁移数据,我建议使用 sqlplus 和查询将数据从 Oracle 卸载到平面文件,然后使用 bcp 将其加载到 SQLServer。数据迁移后,我会创建索引和约束。从主键开始,然后是外键。为了使卸载的数据保持一致,我会将 Oracle 置于静默模式 - 仅允许 SYS 命令。 sqlplus 和 bcp 是供应商的专用工具。非常快速且可靠。

    使用自定义构建的应用程序进行迁移几乎相同 - 只需将 sqlplus/bcp 替换为您的应用程序。在没有索引和约束的情况下,数据将更快地加载到 SQLServer,因此先迁移数据稍后再创建索引和约束。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-22
      • 2016-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-29
      相关资源
      最近更新 更多