使用 PostgreSQL,我可以轻松地执行一个 select 语句来返回一个 datatype 数组的列point
。即colA
是数据类型point[]
select colA from tbl
返回包含点数组的列:
+-----------------------------+
| colA |
+-----------------------------+
| (180.0,90.0),(-180.0,-90.0) |
| (64.0,38.0),(-26.0,-40.0) |
| etc |
+-----------------------------+
我确定该列是 type point[]
,因为select colA[0]
按预期返回。
我正在尝试从另一台服务器使用DBLINK()
. 这是查询:
select
colA
from dblink(
'my_conn',
'select
colA
from public.tbl'
) as s (
colA point[]
)
此查询失败并显示以下错误消息:
SQL 错误 [22P02]:错误:格式错误的数组文字:“(180,90),(-180,-90)”详细信息:数组值必须以“{”或维度信息开头。
我测试了我能够point
使用DBLINK
. 即这个查询成功:
select
colA
from dblink(
'my_conn',
'select
colA[0]
from public.tbl'
) as s (
colA point
)
所以,我的问题是如何通过 DBLINK 函数选择数组?.
我找到的解决方案是通过铸造:
DBLINK
将SQL 中的列指定为TEXT
DBLINK
在SQL 语句中转换为文本TEXT
到POINT[]
外面DBLINK
PostgreSQL:从文本转换到点 [] 的最佳方法是什么?