0

这些天我主要做的是将 Oracle SQL 数据库转换为 PostgreSQL (9.1.6) 数据库。

我经常遇到的最常见的问题如下:

1. decode --> case when
2. nvl --> coalesce
3. (+) --> outer join
4. connect by prior --> connectby function with tablefunc contrib module.
5. merge into --> ???
etc...

我目前正在浏览 PostgreSQL 手册,有趣的是,似乎没有任何MERGE INTO声明(或任何直接替换它)。

我知道 PL/pgSQL 可以用作替代方案,但这对我来说意味着很多额外的工作量。我对此有什么遗漏吗?

4

1 回答 1

1

没有简单的替换,当然也不是 9.1。

最好的选择是升级到 9.2 并查看可写 CTE。这些允许您以类似的方式进行多阶段写入操作。例如,您可以:

WITH up (UPDATE foo set bar = 'baz' where id > 1000
         returning id)
INSERT INTO foo(id, bar) 
SELECT s, 'baz'
  FROM generate_sequence(1001, 10000) s
 WHERE s NOT IN (select id from up);
于 2013-10-26T15:15:15.967 回答