Postgres Tutorial: pg_restore: [archiver] input fi

2019-04-26 07:27发布

问题:

I'm working through the Postgres DVD tutorial and am running into issues importing their sample database.

Running pg_restore -U postgres -d dvdrental ~[filepath]/dvd-database.tar.gz gives me pg_restore: [archiver] input file does not appear to be a valid archive.

My process so far has been the following:

  1. Download the dvdrental.zip file
  2. Extract it to a .tar using tar czf dvd-database.tar.gz dvdrental.zip (I've also tried extracting the zip to a folder first with the same result, as well as dropping the .gz)
  3. Running pg_restore -U postgres -d dvdrental ~[filepath]/dvd-database.tar as stated above.

I'm currently using Postgres 9.5, which may be causing the issue. Looking for an answer that points out where I'm going wrong in this process or how to update an archive of a Postgres database to 9.5.

回答1:

Per comments above, the solution was simple.

Extracting the dvdrental.zip file to an uncompressed .tar is not necessary as suggested in the tutorial instructions. pg_restore will work if pointed to the directory where the database dump was extracted:

pg_restore -U <username> -d dvdrental <your/path/to/extracted/dir>/dvdrental



回答2:

After trying for hours which worked for me is the below command. Since PgAdmin 4 it's very hard to work with.

/Library/PostgreSQL/10/bin/pg_restore -U postgres -p 5433  -d dvdrental /pg-db/dvdrental/

Just extract the zip into a folder and execute the pg_restore command with these options in my case Mac os where /pg-db/dvdrental/ is the zip extracted directory.