Postgresql - pg_dump - 找不到匹配的模式

时间:2012-09-26 10:18:14

标签: postgresql database-schema pg-dump

我正在尝试从PostgreSQL数据库创建备份,但收到以下错误:pg_dump:找不到匹配的模式

我以root身份登录并运行命令

pg_dump -f db.dump --format = plain --schema = existing_schema --username = userx --host = localhost databasename

  1. 我使用userx登录到psql并尝试了\ dt - 这给了我信息,名为existing_schema的模式是公共的。
  2. 我检查了\ l以查看该数据库名称是数据库名称。
  3. 密码正确,否则我无法访问psql。
  4. Localhost是正确的,从正在运行的进程中检查。尝试了服务器的ip-address,但在这种情况下,pg_admin给出了有关主机地址的错误。
  5. 输出\ dl:

     
                      List of relations
    
    Schema |                Name                 | Type  | Owner
    --------+-------------------------------------+-------+-------
     public | existing_schema                    | table | userx
    

5 个答案:

答案 0 :(得分:7)

您可以尝试使用反斜杠和双引号,如here所述。

sudo -u postgres pg_dump -v Database_Name -t "\"Table_Name\""

答案 1 :(得分:2)

架构的名称为public

existing_schema是架构公共中的表的名称。

您的pg_dump命令行不清楚您想要做什么。

如果要从架构 public导出所有表,则需要指定:

--schema=public

如果您只想导出 existing_schema,那么您需要指定:

--table=existing_schema

答案 2 :(得分:0)

      \dn list out all the schema in the database 

如果您只想转储架构,

refer

答案 3 :(得分:0)

对于未来的Google员工,在我的情况下,我的架构中包含点(“ my.schema”),而解决此问题的正确方法是转义:

pg_dump -U postgres -d mydatabase --schema \"my.schema\"

答案 4 :(得分:0)

在我的情况下,架构名称是大写的,无论我尝试什么(-n MYSCHEMA-n "MYSCHEMA"-n "\"MYSCHEMA\""),它都不起作用,直到我将架构重命名为“myschema”在数据库中。然后我可以转储所有的 -n MYSCHEMA-n "MYSCHEMA"-n "\"MYSCHEMA\""

看起来 pg_dump 内部使用小写,这意味着它没有引用命令行中给出的架构名称。

但是,当使用 -n """MYSCHEMA""" 调用 pg_dump 时它可以工作。

当添加表名时,选项 -n 不再适合我。如果 schema 和 table-name 包含大写字母,我使用这个:

pg_dump -f file.txt -t \"MySchema\".\"MyTable\"