自动将存储过程从SQL Server迁移到Postgres



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

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

手动转换每个存储过程是一项繁琐的任务。除了手动转换代码,还有其他方法吗?我希望有人能指导/帮助我这件事。

供参考:

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

很快就会有,Amazon正在Apache下发布一个开源工具,作为传统SQL应用程序和Postgres数据库之间的转换层。这个转换层允许您的代码在当前的SQL设置下操作,但它被转换为Postgres DB。它被称为Postgresql的Babelfish。它定于2021年推出,但目前还没有上市。https://babelfish-for-postgresql.github.io/babelfish-for-postgresql/

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

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

  2. PG不支持SQL Server支持的嵌套事务。在这种情况下,行为将是不同的,结果不是相同。

  3. 字符串数据在SQL Server中默认具有排序CI/AS, PG不完全支持(ICU排序不支持LIKE并抛出错误作为示例)。

  4. PG在字符串方面不符合SQL标准数据类型。PG只使用CHAR/VARCHAR。没有NCHAR/NVARCHAR,只有字符串

  5. PG支持SQL Server中不支持的功能重载。使用sql_variant数据类型的泛型代码的函数必须翻译成函数重载

  6. PG不区分函数和过程(即缺乏安全感)。

将有许多其他的功能是完全不同的,我正在写一系列的论文关于PG和SQL Server之间的区别。第一个是关于DBA查询的性能,第二个是关于COUT的性能,第三个是功能差异的完整全景…

最新更新