导入AWS RDS时PostgreSQL转储问题

时间:2018-04-14 14:16:45

标签: sql postgresql amazon-web-services amazon-rds postgresql-9.4

我一直在努力使用sed输出的几个修改(使用pg_dump)来匹配 AWS RDS 对用户/角色的限制,但已经到了在重新创建所需的数据库结构的同时禁止pg_catalog模式访问的点,并使搜索路径变得混乱。

最初我们有:

错误:架构pg_catalog

的权限被拒绝

触发自:

SET search_path = reports, pg_catalog;

--
-- Name: entrada_salida; Type: TYPE; Schema: reports; Owner: waypoint
--

CREATE TYPE entrada_salida AS (
        entrada timestamp with time zone,
        salida timestamp with time zone
);

当前的pg_dump命令已演变为:

pg_dump -U waypoint -h $PGHOST --schema-only $PGDATABASE | sed  -- 's/COMMENT ON EXTENSION/-- COMMENT ON EXTENSION/g' | sed  -- 's/, pg_catalog;/;/g' | tr -d $'\r' > /tmp/schema.sql

但是从pg_dump生成的脚本(pg_catalog行)中删除SET search_path会产生以下结果:

ERROR:  no schema has been selected to create in

任何可行的解决方法?

备注

  • 原产地:PostgreSQL 9.4.9
  • --行添加了前导COMMENT ON EXTENSION(已注释掉),因为不允许在RDS中修改现有扩展名

  • tr用于在某些用户定义的函数中过滤掉左侧嵌入的CTRL-M字符。

修改 手动编辑转储以强制使用reports entrada_salida类型,我得到了:

 ERROR:  permission denied for schema reports

所以我猜有一些权限没有被迁移,我将不得不在转储中查找它们

1 个答案:

答案 0 :(得分:0)

AWS RDS中似乎禁止使用“创建类型”,因为它需要超级用户访问权限。 https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.MasterAccounts.html