使用postgis正确创建多面列

时间:2014-05-13 07:26:35

标签: sql postgresql postgis

我是新的postgres和postgis我使用postgis v2.0。 我有一个数据库已经在使用postgis,并希望从备份恢复数据,使用下一行:

pg_restore -U db_user -d db_name -C backupfile.backup

我收到下一个错误:

sql:import.sql:53: ERROR:  type "geometry" does not exist
LINE 19:     geom public.geometry(MultiPolygon,4326)

我能够获取sql代码,如果我执行它,我得到同样的错误,当然:), 和sql代码是:

CREATE SCHEMA ch01;


ALTER SCHEMA ch01 OWNER TO db_user;

SET search_path = ch01, pg_catalog;

SET default_tablespace = '';

SET default_with_oids = false;

CREATE TABLE geotable (
    ...
    geom public.geometry(MultiPolygon,4326)
);  

...
你能帮帮我吗?使用此必需列创建此表的正确方法是什么?请注意,此表不是在几何类型为的公共模式中创建的,而是要求在ch01模式中创建,我认为这可能是问题,但我真的不知道。

提前致谢

1 个答案:

答案 0 :(得分:1)

尝试:

create table ch01.geotable(
  geom geometry(MultiPolygon, 4326)
);

属于模式ch01的表,而不是列。当然,您可以在创建表格后向特定用户授予访问权限。几何函数默认安装在模式public中,因此对于具有该数据库访问权限的任何人通常都可以使用它们 - 您的错误来自于在create table语句中放置schema.datatype。

有关模式,用户等的更多信息,请参阅官方文档http://www.postgresql.org/docs/9.1/static/ddl-schemas.html