Postgresql将类型GEOCOORD_T更改为POINT

时间:2015-10-21 17:41:20

标签: sql postgresql

我有一个Postgres表locations,其中坐标保存在类型为geocoord的列中:
geocoord_t,输出为"(12.345678,-0.123456)"

它是否特别有用,我想将此列更改为point类型 可能有ALTER TABLE,但我不知道如何将字符串转换为点类型。

我该怎么做? 感谢

1 个答案:

答案 0 :(得分:2)

PostgreSQL没有geocoord_t数据类型,所以这有点猜测,但一般程序是这样的:

ALTER TABLE locations ALTER COLUMN geocoord SET DATA TYPE point;

如果没有从geocoord_tpoint的自动转换,则必须附加USING子句。看到geocoord_tpoint数据类型可以提取的文本格式输出其值,它可以像以下一样简单:

... SET DATA TYPE point USING geocoord::text

否则使用更复杂的表达方式,如:

... SET DATA TYPE point USING point(geocoord.longitude, geocoord.latitude)

geocoord_t类型支持的任何其他选项。第二个选项可能更快,因为它避免了从二进制文件到文本到二进制的转换。