在Amazon RDS上安装PostGIS

时间:2016-01-21 13:40:04

标签: postgresql postgis amazon-rds

我正在尝试从AWS文档中遵循本指南:http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.PostgreSQL.CommonDBATasks.html#Appendix.PostgreSQL.CommonDBATasks.PostGIS

On"步骤2:在显示(4 rows)的文档中加载PostGIS扩展程序"但是有三行。到目前为止,我自己运行相同的命令,我看到四行,文档中缺少的行是tiger_data。在第3步中,是否还应将tiger_data的所有权提供给rds_superuser?

在"步骤4:将对象的所有权转移到rds_superuser角色",我在使用文档中提供的查询时出现语法错误,我不知道是什么要解决这个问题:

postgres=> CREATE FUNCTION exec(text) returns text language plpgsql volatile AS $f$ BEGIN EXECUTE $1; RETURN $1; END; $f$;
CREATE FUNCTION
postgres=> SELECT exec('ALTER TABLE ' || quote_ident(s.nspname) || '.' || quote_ident(s.relname) || ' OWNER TO rds_superuser,')
postgres->   FROM (
postgres(>     SELECT nspname, relname
postgres(>     FROM pg_class c JOIN pg_namespace n ON (c.relnamespace = n.oid)
postgres(>     WHERE nspname in ('tiger','topology') AND
postgres(>     relkind IN ('r','S','v') ORDER BY relkind = 'S')
postgres-> s;
ERROR:  syntax error at end of input
LINE 1: ALTER TABLE tiger.loader_variables OWNER TO rds_superuser,
                                                                  ^
QUERY:  ALTER TABLE tiger.loader_variables OWNER TO rds_superuser,
CONTEXT:  PL/pgSQL function exec(text) line 1 at EXECUTE statement

1 个答案:

答案 0 :(得分:1)

在我看来,这就像文档中的拼写错误一样 - ,应该有一个;。正在构建的查询是:

ALTER TABLE tiger.loader_variables OWNER TO rds_superuser,

但应该是:

ALTER TABLE tiger.loader_variables OWNER TO rds_superuser;

因此,请将SELECT行更改为:

SELECT exec('ALTER TABLE ' || quote_ident(s.nspname) || '.' || quote_ident(s.relname) || ' OWNER TO rds_superuser;')
FROM ...