Question

I'm trying to create a backup from PostgreSQL database, but getting the following error: pg_dump: No matching schemas were found

I'm logged in as root and running the command

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

  1. I logged in with userx to psql and tried \dt - this gave me information, that schema with name existing_schema is public.
  2. I checked \l to see that databasename is the database name.
  3. Password is correct, otherwise I could not access psql.
  4. Localhost is correct, checked from running processes. Tried the ip-address of the server also, but in this case pg_admin gave an error about the host address.

Output of \dl:

 
                  List of relations

Schema |                Name                 | Type  | Owner
--------+-------------------------------------+-------+-------
 public | existing_schema                    | table | userx
Was it helpful?

Solution

The schema's name is public.

existing_schema is the name of a table in the schema public.

It's not clear from your pg_dump commandline what you want to do.

If you want to export all tables from the schema public you need to specify:

--schema=public

If you want to export only the table existing_schema then you need to specify:

--table=existing_schema

OTHER TIPS

You can try with back slash and double quote as metioned here.

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

For future googlers, in my case my schema had dots ("my.schema"), and the proper way to address this is by escaping:

pg_dump -U postgres -d mydatabase --schema \"my.schema\"
      \dn list out all the schema in the database 

if you want to dump only schema ,

refer

In my case the schema name was upper case and no matter what I tried (-n MYSCHEMA, -n "MYSCHEMA", -n "\"MYSCHEMA\"") it did not work until I renamed the schema to "myschema" in the database. Then I could dump with all of -n MYSCHEMA, -n "MYSCHEMA", and -n "\"MYSCHEMA\"".

It looks like pg_dump internally uses lower case, that means it doesn't quote the schema name given in the command line.

However when calling pg_dump with -n """MYSCHEMA""" it works.

When adding a table name however the option -n did not work anymore for me. If schema and table-name contains capitalized letters, I used this:

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

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top