Database migration 如何将MSSQL查询转换为Postgres查询

Database migration 如何将MSSQL查询转换为Postgres查询,database-migration,greenplum,hawq,Database Migration,Greenplum,Hawq,我必须迁移复杂的SQL查询,以便在Postgres中转换 复杂SQL查询: 超过4个表连接、大量筛选器、聚合函数、CASE-when-then等 例如: 样本输入 Select ROW_NUMBER() OVER (ORDER BY getdate()) AS ID, GETDATE() as time, arc.Customer as Customer, GroupBy4KPI, arc.MasterAccount, arc.Cus

我必须迁移复杂的SQL查询,以便在Postgres中转换

复杂SQL查询: 超过4个表连接、大量筛选器、聚合函数、CASE-when-then等

例如: 样本输入

    Select  
    ROW_NUMBER() OVER (ORDER BY getdate()) AS ID, 
    GETDATE() as time,
    arc.Customer as Customer,
    GroupBy4KPI,
    arc.MasterAccount,
    arc.CustomerClass,
   from tablename_1 arc left join  tablename_2 varc on arc.Customer = varc.Customer
请建议我们是否有任何自定义函数或工具来完成DML语句从MSSQL到PSQL的转换

事实

这样,我必须解析1600个查询。所以,这项工作是重复的。我必须每天执行或解析MSSQL查询


如果您能在这方面提供帮助,我们将不胜感激。

我怀疑您是否能找到一根魔杖来实现这一转换,而不是手动过程。我会对任何这样的工具保持警惕,不管怎样,它都不会产生可怕的查询。您可能必须手动转换每个查询。对于寻找工具推荐,这也很可能被视为脱离主题。在这个项目上我并不羡慕你。听起来很痛苦,明白了。不过,在将此转换作为手动过程处理时还有什么提示吗?也许可以运行postgres
EXPLAIN
来验证查询?至少通过这种方式,您可以在开始之前知道是否需要更改查询。如果您使用的是Greeplum,请不要添加
postgresql
标记。它们完全不同。如果用
now()
替换
getdate()
,或者SQL标准的
current\u date
@a\u horse\u with\u no\u name在这两点上都是正确的,则显示的查询将正常工作。只需将getdate()更改为now(),并且不使用PostgreSQL标记Greenplum帖子。