plik wejściowy wydaje się być zrzutem formatu tekstowego. Użyj psql

90

Kopię zapasową wykonuję za pomocą

pg_dump db_production > postgres_db.dump

a następnie kopiuję go do localhost przy użyciu scp.

Teraz, kiedy importuję do mojej lokalnej bazy danych, wyświetla się błąd

pg_restore: [archiver] input file appears to be a text format dump. Please use psql.

używając wiersza poleceń

pg_restore -d db_development postgres_db.dump
Haseeb Ahmad
źródło

Odpowiedzi:

133

Z pg_dumpdokumentacji:

Przykłady

Aby zrzucić bazę danych o nazwie mydb do pliku skryptu SQL :

$ pg_dump mydb > db.sql

Aby przeładować taki skrypt do (świeżo utworzonej) bazy danych o nazwie newdb :

$ psql -d newdb -f db.sql

Aby zrzucić bazę danych do pliku archiwum o niestandardowym formacie:

$ pg_dump -Fc mydb > db.dump

Aby zrzucić bazę danych do archiwum w formacie katalogowym:

$ pg_dump -Fd mydb -f dumpdir

Aby przeładować plik archiwum do (świeżo utworzonej) bazy danych o nazwie newdb:

$ pg_restore -d newdb db.dump

Z pg_restoredokumentacji:

Przykłady

Załóżmy, że zrzuciliśmy bazę danych o nazwie mydb do pliku zrzutu w niestandardowym formacie:

$ pg_dump -Fc mydb > db.dump

Aby usunąć bazę danych i odtworzyć ją ze zrzutu:

$ dropdb mydb
$ pg_restore -C -d postgres db.dump
Зелёный
źródło
2
kiedy robię pg_restore, otrzymuję pg_restore: [archiwizator] plik wejściowy wygląda na zrzut w formacie tekstowym. Użyj psql.
Haseeb Ahmad
Którego używam do przywracania bazy danych?
Haseeb Ahmad
66
to nie odpowiada na pytanie
dopatraman
1
na sposób przywrócenia z wyewidencjonowania pliku tekstowego serverfault.com/questions/260607/…
chrs
5
IMO ten post zawiera zbyt wiele szczegółów, które zaciemniają odpowiedź. Autor nie zauważył, że dokumentacja pg_dump dla parametru '-F' nie mówi, że format domyślny ('p' / 'plain') jest odpowiedni dla pg_restore. pg_restore wymaga, aby pg_dump był używany z formatami 'c', 'd' lub 't'.
Matt
59

Powyższa odpowiedź nie działa dla mnie, to zadziałało:

psql db_development < postgres_db.dump

Uziel Valdez
źródło
Krótkie i słodkie. U mnie też zadziałało.
Uczeń
11

Dla mnie, gdy próbuję przywrócić ze zdalnego hosta, którego użyłem

psql -U username -p 5432 -h 10.10.10.1 -d database < db.dump

działało dobrze. A jeśli nie zdalne, po prostu następujące polecenie zadziałało.

psql -d database < db.dump
Tserenjamts
źródło
7

Aby utworzyć kopię zapasową za pomocą pg_dumpzgodnego z nią pg_restore, musisz użyć --format=custom/ -Fcpodczas tworzenia zrzutu.

Z dokumentów:

Wyprowadź archiwum w niestandardowym formacie, odpowiednie do wprowadzenia do pg_restore.

Twoje pg_dumppolecenie może więc wyglądać następująco:

pg_dump --file /tmp/db.dump --format=custom --host localhost --dbname my-source-database --username my-username --password

I twoje pg_restorepolecenie:

pg_restore --verbose --clean --no-acl --no-owner --host localhost --dbname my-destination-database /tmp/db.dump
Tim Fletcher
źródło
6

Dla mnie to działa jak ten. C: \ Program Files \ PostgreSQL \ 12 \ bin> psql -U postgres -p 5432 -d dummy -f C: \ Users \ Downloads \ d2cm_test.sql

RAJNISH YADAV
źródło
2
Prosta i pomocna odpowiedź!
Rax Weber
1
Dziękuję @RAJNISH YADAV.
Amit
0

jeśli używasz pg_dump z -Fp do tworzenia kopii zapasowych w formacie zwykłego tekstu, użyj następującego polecenia:

cat db.txt | psql dbname

aby skopiować wszystkie dane do bazy danych o nazwie dbname

M2E67
źródło
0

Jeśli masz pełny zrzut bazy danych:

PGPASSWORD="your_pass" psql -h "your_host" -U "your_user" -d "your_database" -f backup.sql

Jeśli jednak masz schematy przechowywane oddzielnie, to nie zadziała. Następnie musisz wyłączyć wyzwalacze wstawiania danych, podobnie jak pg_restore --disable-triggers. Możesz wtedy użyć tego:

cat database_data_only.gzip | gunzip | PGPASSWORD="your_pass" psql -h "your_host" -U root "your_database" -c 'SET session_replication_role = replica;' -f /dev/stdin

Na marginesie, myślę, że jest to bardzo niefortunna wada postgres. Domyślny sposób tworzenia zrzutu pg_dumpjest niezgodny z pg_restore. Jednak z kilkoma dodatkowymi klawiszami jest. WTF?

VasiliNovikov
źródło