【问题标题】:Automate migration of stored procedures from SQL Server to Postgres自动将存储过程从 SQL Server 迁移到 Postgres
【发布时间】:2021-04-23 09:18:34
【问题描述】:

我们有大约 75~ 个表和 100~ 个存储过程。我们使用 Sequelize 创建了一个自定义 NodeJS 应用程序来迁移表及其数据。但我们也想迁移存储过程。

我们唯一可能的选择是手动转换每个存储过程。

手动转换每个存储过程是一项繁琐的任务。那么除了手动转换代码还有什么办法吗?我希望有人可以指导/帮助我。

仅供参考:

  • SQL Server 版本:16+
  • Postgres 版本:12+

【问题讨论】:

  • T-SQL 和 PL/pgSQL 的概念是根本不同的。我真的怀疑是否有任何半途而废的自动迁移。在了解所有差异并学习 Postgres(和 PL/pgSQL)中的最佳实践和方法之后手动执行此迁移是进行此迁移的最佳方式。
  • 有很多数据管理和迁移工具。 Sequelize 不是其中之一。它甚至不是一个数据管理工具,它是一种处理对象和对象图的 ORM 方法。数据管理作业中没有对象,除了表、行、字段和转换。您不能只是从一个数据库移动到另一个数据库,尤其是在使用错误工具时

标签: sql-server postgresql database-migration


【解决方案1】:

很快,亚马逊将在 Apache 下推出一个开源工具,作为传统 SQL 应用程序和 Postgres 数据库之间的转换层。这个翻译层允许您的代码在其当前的 SQL 设置下运行,但它会被翻译为 Postgres DB。它被称为 Postgresql 的 Babelfish。它定于 2021 年发布,但目前不可用。 https://babelfish-for-postgresql.github.io/babelfish-for-postgresql/

【讨论】:

    【解决方案2】:

    由于缺少许多功能,因此绝对不可能将 Transact SQL 过程自动转换为 PG PL/SQL 函数:

    1. PG不做SQL Server默认使用的悲观锁

    2. PG 不支持 SQL Server 支持的嵌套事务。在 在这种情况下,行为会有所不同,结果不会 一样。

    3. 字符串数据在 SQL Server 中默认具有排序规则 CI/AS,即 PG 不完全支持(LIKE 不支持 ICU 排序规则 并以报错为例)。

    4. PG 不符合关于字符串的 SQL 标准 数据类型。 PG 仅使用 CHAR/VARCHAR。没有 NCHAR/NVARCHAR,但有字符串 在 PG 中是 NCCHAR/NVARCHAR

    5. PG 支持 SQL Server 不支持的函数重载。 使用具有 sql_variant 数据类型的通用代码的函数必须 翻译成函数重载

    6. PG 在函数和过程之间没有区别(即 缺乏安全感)。 SQL Server 做到了...

    会有很多其他功能完全不同,我正在写一系列关于PG和SQL Server区别的论文。 The first one is about performances of DBA queries,第二篇关于COUT的表现,第三篇是功能差异的完整全景图……

    【讨论】:

    • 6.是错的。 Postgres 中的函数和过程之间存在差异(并且比 SQL Server 中的要大得多,因为过程并不意味着返回数据)
    • 关于你的博客系列:如果你不write the name correctly,没人会相信你知道PostgreSQL
    • 在 SQL 标准 (ISO) 中,不允许函数以任何方式修改数据库(表或视图的 INSERT、UPDATE、DELETE、MERGE、TRUNCATE 和 DDL、DCL)。这就是为什么我说 PG 对概念没有区别......
    • 你能告诉我在 SQL 标准的哪一章中记录了不允许使用 DML 的函数吗?这是我第一次听说这个限制。 “4.27.4 例程描述符”一章甚至允许描述符指示例程(=函数或过程)是否是“mutator”例程
    • 请参考 ISO 文档并发布其参考。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-18
    • 2014-05-31
    • 1970-01-01
    • 2016-08-23
    • 1970-01-01
    相关资源
    最近更新 更多