如何在 postgresql 9.4 中安装/使用 orafce 包?
How to install / use orafce package in postgresql 9.4?
我是 9.4 版本中的 运行 "official" docker container of postgresql。我进入 运行 容器并安装了 orafce
docker exec -i -t my_postgres bash
apt-get install postgresql-9.4-orafce
之后我尝试重新加载并重新启动 postgresql
服务,以及只是重新启动整个容器,但是当我尝试使用应该在 orafce 中定义的函数时,它并没有工作。
我说的是来自 here 的一个简单示例:
SELECT add_months(date '2005-05-31',1); -- > 2005-06-30
SELECT last_day(date '2005-05-24'); -- > 2005-05-31
SELECT next_day(date '2005-05-24', 'monday'); -- > 2005-05-30
SELECT next_day(date '2005-05-24', 2); -- > 2005-05-30
SELECT months_between(date '1995-02-02', date '1995-01-01'); -- > 1.0322580645161
SELECT trunc(date '2005-07-12', 'iw'); -- > 2005-07-11
SELECT round(date '2005-07-12', 'yyyy'); -- > 2006-01-01
这是我得到的输出,只需将这些命令复制粘贴到 phpPgAdmin 到 postgres/public:
SQL error:
ERROR: function add_months(date, integer) does not exist
LINE 1: SELECT add_months(date '2005-05-31',1); -- > 2005-06-30
^
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
In statement:
SELECT add_months(date '2005-05-31',1); -- > 2005-06-30
SELECT last_day(date '2005-05-24'); -- > 2005-05-31
SELECT next_day(date '2005-05-24', 'monday'); -- > 2005-05-30
SELECT next_day(date '2005-05-24', 2); -- > 2005-05-30
SELECT months_between(date '1995-02-02', date '1995-01-01'); -- > 1.0322580645161
SELECT trunc(date '2005-07-12', 'iw'); -- > 2005-07-11
SELECT round(date '2005-07-12', 'yyyy'); -- > 2006-01-01
现在,我知道,我不应该直接在 docker 中安装包,也不应该使用 phpPgAdmin,这只是一个简单的测试,看看我是否可以将较小的 oracle DB 移植到 postgres。
为了能够使用 orafce,我还缺少什么吗?我在安装包或重启库时都没有发现任何错误。
其中,一个样本
CREATE EXTENSION orafce
够了
我是 9.4 版本中的 运行 "official" docker container of postgresql。我进入 运行 容器并安装了 orafce
docker exec -i -t my_postgres bash
apt-get install postgresql-9.4-orafce
之后我尝试重新加载并重新启动 postgresql
服务,以及只是重新启动整个容器,但是当我尝试使用应该在 orafce 中定义的函数时,它并没有工作。
我说的是来自 here 的一个简单示例:
SELECT add_months(date '2005-05-31',1); -- > 2005-06-30
SELECT last_day(date '2005-05-24'); -- > 2005-05-31
SELECT next_day(date '2005-05-24', 'monday'); -- > 2005-05-30
SELECT next_day(date '2005-05-24', 2); -- > 2005-05-30
SELECT months_between(date '1995-02-02', date '1995-01-01'); -- > 1.0322580645161
SELECT trunc(date '2005-07-12', 'iw'); -- > 2005-07-11
SELECT round(date '2005-07-12', 'yyyy'); -- > 2006-01-01
这是我得到的输出,只需将这些命令复制粘贴到 phpPgAdmin 到 postgres/public:
SQL error:
ERROR: function add_months(date, integer) does not exist
LINE 1: SELECT add_months(date '2005-05-31',1); -- > 2005-06-30
^
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
In statement:
SELECT add_months(date '2005-05-31',1); -- > 2005-06-30
SELECT last_day(date '2005-05-24'); -- > 2005-05-31
SELECT next_day(date '2005-05-24', 'monday'); -- > 2005-05-30
SELECT next_day(date '2005-05-24', 2); -- > 2005-05-30
SELECT months_between(date '1995-02-02', date '1995-01-01'); -- > 1.0322580645161
SELECT trunc(date '2005-07-12', 'iw'); -- > 2005-07-11
SELECT round(date '2005-07-12', 'yyyy'); -- > 2006-01-01
现在,我知道,我不应该直接在 docker 中安装包,也不应该使用 phpPgAdmin,这只是一个简单的测试,看看我是否可以将较小的 oracle DB 移植到 postgres。
为了能够使用 orafce,我还缺少什么吗?我在安装包或重启库时都没有发现任何错误。
其中,一个样本
CREATE EXTENSION orafce
够了