【问题标题】:pg dump output the schema name and the datapg dump 输出模式名称和数据
【发布时间】:2015-10-26 03:28:46
【问题描述】:

当我使用 (pg_dump -f backup.sql mydb) 时,不包括架构名称。如何转储也将输出方案名称(个人)。见下面的例子

输出:ALTER TYPE basicinfo OWNER TO postgres; // 注意:basicinfo 是表名

预期输出:ALTER TYPE personal.basicinfo OWNER TO postgres;

有什么想法吗?

【问题讨论】:

  • 如果你浏览转储的前几行,你会看到像 SET search_path = personal.这应该确保选择权利对象。您可能出于其他原因想明确提及架构名称吗?
  • 感谢 Jayadevan,但您说得对,我也想明确提及架构名称。我一直在恢复具有相同格式(包括架构名称)的 database.sql 并希望像相同格式一样备份。还有其他方法吗?

标签: postgresql database-backups pgadmin pg-dump


【解决方案1】:

全局数据库属性(例如 OWNER 等)始终在 pg_dump 输出中以 SCHEMA 名称给出。

但是,据我所知,对于非全局数据库对象,没有任何方法可以将 SCHEMA 名称添加到所有数据库对象之前。该脚本的工作方式是,它预先设置了SET search_path 所有 Schema 特定的数据库对象......这样更有效并且具有相同的效果。

如果您尝试解析 pg_dump 输出以提取独立工作的给定 SQL 行,您可能还必须解析最近的 SET search_path 行并在执行目标行之前执行该行(例如 @987654324 @) 以达到预期的效果。

【讨论】:

    【解决方案2】:

    你不能直接使用 pg_dump 来做到这一点。 尝试使用不同的工具,它们对导出 PostgreSQL 数据库有不同的实现。

    以下是工具列表:

    1. phpPgAdmin - http://sourceforge.net/projects/phppgadmin

    2. AnySQL 大师 - http://www.sqlmaestro.com/products/anysql/maestro/

    3. DBeaver - http://dbeaver.jkiss.org/

    所有参考:https://wiki.postgresql.org/wiki/Community_Guide_to_PostgreSQL_GUI_Tools

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-08
      • 2011-05-08
      • 1970-01-01
      • 2015-10-20
      • 2022-01-25
      • 2021-11-25
      相关资源
      最近更新 更多