这些天我最常做的是将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作为替代方案,但这对我来说意味着很多额外的工作量。我有什么遗漏吗?
答案 0 :(得分: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);