将几何体从 T-SQL 转换为 Postgres
Convert Geometry from T-SQL to Postgres
我有这个专栏用于从 SQL 服务器创建几何:
Shape AS ([geometry]::STGeomFromText(((('POINT('+CONVERT([varchar](20);,Longitude))+' ')+CONVERT([varchar](20),Latitude))+')',(4326))), PRIMARY KEY CLUSTERED
我需要创建从 SQL 服务器到 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 完全无效(并且也不是有效的标准 SQL)。看来你是盲目地从 SQL 服务器
复制了那个定义
- SQL中的字符串连接运算符是
||
,不是+
。
- 方括号对于 SQL 中的标识符无效。
- Postgres 没有
CLUSTERED
索引。
但最重要的是:Postgres 当前 (Postgres 11) 没有计算(生成)列,因此您不能使用 Shape AS <expression>
将列定义为计算列
它们将在即将发布的第 12 版中提供(将在 Q4/2019 中发布)。
相关:
- PostgreSQL: creating a generated column
- Computed / calculated / virtual / derived columns in PostgreSQL
我有这个专栏用于从 SQL 服务器创建几何:
Shape AS ([geometry]::STGeomFromText(((('POINT('+CONVERT([varchar](20);,Longitude))+' ')+CONVERT([varchar](20),Latitude))+')',(4326))), PRIMARY KEY CLUSTERED
我需要创建从 SQL 服务器到 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 完全无效(并且也不是有效的标准 SQL)。看来你是盲目地从 SQL 服务器
复制了那个定义- SQL中的字符串连接运算符是
||
,不是+
。 - 方括号对于 SQL 中的标识符无效。
- Postgres 没有
CLUSTERED
索引。
但最重要的是:Postgres 当前 (Postgres 11) 没有计算(生成)列,因此您不能使用 Shape AS <expression>
它们将在即将发布的第 12 版中提供(将在 Q4/2019 中发布)。
相关:
- PostgreSQL: creating a generated column
- Computed / calculated / virtual / derived columns in PostgreSQL