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

3
我们有大约75个左右的表格和100个左右的存储过程。我们已经创建了一个使用Sequelize的自定义NodeJS应用程序来迁移表格及其数据,但我们也想迁移存储过程。
唯一可行的选择是手动转换每个存储过程。
手动转换每个存储过程是一项繁琐的任务。除了手动转换代码之外,还有其他方法吗?我希望有人能够指导/帮助我。
FYI:
SQL Server版本:16+
Postgres版本:12+

3
T-SQL和PL/pgSQL之间的概念根本不同。我真的怀疑是否有任何像样的自动迁移可能性。在理解所有差异并学习Postgres(以及PL/pgSQL)中的最佳实践和方法之后手动完成迁移是最好的方式。 - user330315
有很多数据管理和迁移工具。Sequelize不是其中之一。它甚至不是一个数据管理工具,而是一个ORM,用于处理对象和对象图。在数据管理作业中没有对象,除了表、行、字段和转换。你不能仅仅使用错误的工具就从一个数据库移动到另一个数据库。 - Panagiotis Kanavos
请查看https://wiki.postgresql.org/wiki/Converting_from_other_Databases_to_PostgreSQL#Microsoft_SQL_Server。 - Frank Heikens
2个回答

0

未来不久,亚马逊将推出一种开源工具,该工具在Apache下运行,可充当传统SQL应用程序和Postgres数据库之间的翻译层。这个翻译层使您的代码可以在当前SQL设置下运行,但它会被翻译为Postgres DB。它被称为 Postgresql的Babelfish。它计划于2021年发布,但目前尚不可用。 https://babelfish-for-postgresql.github.io/babelfish-for-postgresql/


现在可以使用Babelfish for PostgreSQL。要了解支持的SQL语法和函数,请参见:https://babelfishpg.org/docs/usage/limitations-of-babelfishJohn Russell是Aurora PostgreSQL和Babelfish for PostgreSQL的开发者倡导者。 - Max Webster
这个问题是关于将Sybase存储过程自动转换为基本的SQL以便通过Postgres使用的。 - Jeryl Cook

-2

由于许多功能的缺失,绝对没有可能自动将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,但PG中的字符串是NCCHAR/NVARCHAR。

  5. PG支持函数重载,而SQL Server不支持。使用sql_variant数据类型的函数必须转换为函数重载。

  6. PG不区分函数和过程(这是一种安全性缺失)。SQL Server会区分...

还有许多其他完全不同的功能,我正在撰写一系列关于PG和SQL Server之间差异的论文。第一篇论文是关于DBA查询性能的, 第二篇是关于COUT性能的,第三篇则是关于功能差异的完整概述...


1
  1. 是错误的。在Postgres中,函数和过程之间有区别(而且比SQL Server中的差别大得多,因为过程不会返回数据)。
- user330315
1
关于你的博客系列:如果你连正确拼写名称都不会,那么没有人会相信你懂得PostgreSQL。 - user330315
在SQL标准(ISO)中,函数不允许以任何方式修改数据库(不允许对表或视图进行INSERT、UPDATE、DELETE、MERGE、TRUNCATE等操作,也不允许进行DDL、DCL)。这就是我说PG没有区分这两个概念的原因... - SQLpro
请参考ISO文件并发布其参考文献。 - SQLpro
无论 SQL 标准允许你做什么,SQL Server 和 PostgreSQL 都允许你创建函数来执行 INSERT、UPDATE 等语句。那么谁在乎标准说了什么呢?https://learn.microsoft.com/en-us/sql/t-sql/statements/create-function-transact-sql?view=sql-server-ver15 - Frank Heikens
显示剩余7条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接