【问题标题】:Convert Geometry from T-SQL to Postgres将几何从 T-SQL 转换为 Postgres
【发布时间】:2019-12-08 17:32:18
【问题描述】:

我有此列用于从 SQL Server 创建几何:

Shape  AS ([geometry]::STGeomFromText(((('POINT('+CONVERT([varchar](20);,Longitude))+' ')+CONVERT([varchar](20),Latitude))+')',(4326))), PRIMARY KEY CLUSTERED 

我需要创建从 SQL Server 到 Postgres 的列:

CREATE EXTENSION postgis;

CREATE EXTENSION postgis_topology;

我还将 STGeomFromText 更改为 ST_GeomFromText,但在 pgAdmin 中出现错误:

ERROR:  syntax error at or near "AS"
LINE 32:  Shape  AS ([geometry]::STGeomFromText(((('POINT('+CONVERT([...
             ^

********** Error **********

ERROR: syntax error at or near "AS"
SQL state: 42601
Character: 818

我是否错过了为 postgis 安装的东西,或者语法需要对 postgres 进行彻底检查?

【问题讨论】:

  • 不相关,但是:Postgres 9.1 是no longer supported,您应该尽快计划升级到当前版本。

标签: postgis postgresql-9.1 sqlgeometry


【解决方案1】:

该语法对 Postgres 完全无效(也不是有效的标准 SQL)。您似乎盲目地从 SQL Server 复制了该定义

  • SQL 中的字符串连接运算符是||,而不是+
  • 方括号对于 SQL 中的标识符无效。
  • Postgres 没有CLUSTERED 索引。

但最重要的是:Postgres 当前(Postgres 11)没有计算(生成)列,因此您不能使用 Shape AS <expression> 将列定义为计算列

它们将在即将发布的第 12 版(将于 2019 年第四季度发布)中提供。

相关:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-29
    • 1970-01-01
    • 1970-01-01
    • 2013-11-08
    • 1970-01-01
    • 2011-02-28
    • 1970-01-01
    相关资源
    最近更新 更多