将点类型数据保存到 pg 服务器

Den*_*alj 1 postgresql postgis

我在 postgres 中有一个将数据插入表的函数,其中一列的类型为point

我不知道如何将我获得的数据保存为可接受的形式,以便函数保存我的数据。

有问题的代码是:

CREATE OR REPLACE FUNCTION db."setMessage"(eml text, msg text, lat text, lng text)

...

INSERT INTO 
    db.messages 
VALUES 
    (DEFAULT, 
     id, 
     $2, 
     DEFAULT, 
     ST_SetSRID(ST_MakePoint($3::float, $4::float), 4326)
    );
Run Code Online (Sandbox Code Playgroud)

我调用函数时收到的错误是:

ERROR: function st_makepoint(double precision, double precision) does not exist
SQL state: 42883
Hint: No function matches the given name and argument types. You might need to add explicit type casts.
Context: PL/pgSQL function "setMessage" line 9 at SQL statement
Run Code Online (Sandbox Code Playgroud)

我尝试以字符串格式 ( 'POINT(12.22343 64.22233)')保存该点,尝试不强制转换 st_makepoint 参数,并在没有外部函数 ( ST_SetSRID) 的情况下插入。

谁能告诉我我做错了什么?

解决方案:

所以成功的方法是按照这个链接来获取所需的库。之后我创建了所需的扩展,现在我可以访问所需的功能。

Dmi*_*ing 5

要安装 PostGIS,请按照https://postgis.net/install 上适用于您的操作系统的说明进行操作。

然后,要在您的数据库上启用它,您可以CREATE EXTENSION postgis;从 psql 或 PGAdmin 执行。