如何知道Postgresql Server运行在什么OS /平台上?

时间:2018-11-19 14:50:24

标签: postgresql postgresql-9.3 postgresql-9.4 postgresql-9.2 postgresql-9.5

我正在尝试编写一个SQL函数,该函数确定Postgres Server是否在Windows上运行,是否可能,或者是否有办法获取正在运行的Server的平台?

2 个答案:

答案 0 :(得分:0)

您只需使用select version()
我在Linux Alpine服务器(通过Docker容器)上进行了尝试,并得到了以下信息:
test =>选择version();

                                             version                                             
-------------------------------------------------------------------------------------------------
 PostgreSQL 9.6.8 on x86_64-pc-linux-musl, compiled by gcc (Alpine 6.2.1) 6.2.1 20160822, 64-bit
(1 row)

您可以在https://www.postgresql.org/docs/current/functions-info.html

上获得有关postgres系统信息功能的更多信息。

希望对您有帮助!

答案 1 :(得分:0)

这是我最后编写和使用的代码,在Postgres 11版本上效果很好:

CREATE OR REPLACE FUNCTION GetPLatform()
RETURNS varchar
AS
$$
 declare platform varchar;
begin  
 SELECT CASE
            WHEN OSVersion.OS LIKE '%w64%' THEN 'windows'
            WHEN OSVersion.OS LIKE '%w32%' THEN 'windows'
            WHEN OSVersion.OS LIKE '%mingw%' THEN 'windows'
            WHEN OSVersion.OS LIKE '%visual studio%' THEN 'windows'
            WHEN OSVersion.OS LIKE '%linux%' THEN 'linux'
            WHEN OSVersion.OS LIKE '%mac%' THEN 'mac'
            ELSE
            'UNKNOWN'
         END into platform
    FROM (SELECT 
            substr(substr(version(), strpos(version(), ' on ')+3), 1, 
            strpos(substr(version(), strpos(version(), ' on ')+3), 
            ', compiled by')-1) as OS) 
    as OSVersion;
    return platform;  
end; 
$$
LANGUAGE PLPGSQL;

select GetPLatform()

您可以根据需要在其他平台上对其进行调整...