Oracle 迁移 PostgreSQL - DUAL 表
Oracle 迁移到 PostgreSQL 中最常见的问题就是 DUAL
表的问题。在 Oracle 数据库中,每个查询都必须跟随一个 FROM
子句,这是强制性的。然而在 PostgreSQL 数据库中,FROM
子句是可选的。本文记录了如何将 Oracle 中的 DUAL
表迁移到 PostgreSQL 数据库中。
Oracle DUAL
表
Oracle 中的 DUAL
表包含一行一列数据,如下所示:
1 | SQL> select * from dual; |
迁移解决方案
针对 Oracle 中 DUAL
表的迁移,我们有两种解决方案。
- 第一种是直接将 Oracle 中的
FROM DUAL
子句移除。这是最简单的迁移方式。 - 第二种是通过创建一个视图来模拟
DUAL
表。这种情况通常用于不能更改应用程序的情况。1
2
3CREATE VIEW public.dual AS SELECT 'X'::varchar AS D;
REVOKE ALL ON public.dual FROM PUBLIC;
GRANT SELECT, REFERENCES ON public.dual TO PUBLIC;
参考
[1] https://wiki.postgresql.org/wiki/Oracle_to_Postgres_Conversion
[2] https://github.com/orafce/orafce
笑林广记 - 避暑
官值暑月,欲觅避凉之地。同僚纷议。
或曰:“某山幽雅。”
或曰:“某寺清闲。”
一老人进曰:“山寺虽好,总不如此座公厅,最是凉快。”
官曰:“何以见得?”
答曰:“别处多有日头,独此处有天无日。”