[postgresql] 입력 파일이 텍스트 형식 덤프 인 것 같습니다. psql을 사용하십시오

나는 백업을 사용하여

pg_dump db_production > postgres_db.dump

그런 다음 scp를 사용하여 localhost에 복사합니다.

이제 로컬 DB에서 가져올 때 오류가 발생합니다.

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

commad 라인을 사용하여

pg_restore -d db_development postgres_db.dump



답변

로부터 pg_dump문서 :

mydb라는 데이터베이스를 SQL 스크립트 파일로 덤프하려면 다음을 수행 하십시오 .

$ pg_dump mydb > db.sql

이러한 스크립트를 newdb라는 이름의 (새로 만든) 데이터베이스에 다시로드하려면 다음을 수행 하십시오 .

$ psql -d newdb -f db.sql

데이터베이스를 사용자 지정 형식 아카이브 파일로 덤프하려면 :

$ pg_dump -Fc mydb > db.dump

데이터베이스를 디렉토리 형식 아카이브로 덤프하려면 다음을 수행하십시오.

$ pg_dump -Fd mydb -f dumpdir

newdb라는 이름의 (새로 생성 된) 데이터베이스에 아카이브 파일을 다시로드하려면 :

$ pg_restore -d newdb db.dump

로부터 pg_restore문서 :

mydb라는 데이터베이스를 사용자 지정 형식 덤프 파일에 덤프했다고 가정합니다.

$ pg_dump -Fc mydb > db.dump

데이터베이스를 삭제하고 덤프에서 다시 생성하려면 :

$ dropdb mydb
$ pg_restore -C -d postgres db.dump


답변

위의 대답은 저에게 효과가 없었습니다.

psql db_development < postgres_db.dump


답변

나를 위해 내가 사용한 원격 호스트에서 복원하려고 할 때

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

잘 작동했습니다. 그리고 원격이 아니라면 다음 명령이 작동했습니다.

psql -d database < db.dump


답변

pg_dump호환되는 백업을 만들려면 덤프를 만들 때 / pg_restore를 사용해야합니다 .--format=custom-Fc

문서에서 :

pg_restore에 입력하기에 적합한 사용자 지정 형식 아카이브를 출력합니다.

따라서 pg_dump명령은 다음과 같습니다.

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

그리고 당신의 pg_restore명령 :

pg_restore --verbose --clean --no-acl --no-owner --host localhost --dbname my-destination-database /tmp/db.dump


답변

저에게는 이렇게 작동합니다.
C : \ Program Files \ PostgreSQL \ 12 \ bin> psql -U postgres -p 5432 -d 더미 -f C : \ Users \ Downloads \ d2cm_test.sql


답변

-Fp와 함께 pg_dump를 사용하여 일반 텍스트 형식으로 백업하는 경우 다음 명령을 사용합니다.

cat db.txt | psql dbname

dbname이라는 이름으로 모든 데이터를 데이터베이스에 복사하려면


답변

전체 DB 덤프가있는 경우 :

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

그러나 별도로 보관 된 스키마가있는 경우 작동하지 않습니다. 그런 다음 .NET과 유사한 데이터 삽입 트리거를 비활성화해야합니다 pg_restore --disable-triggers. 그런 다음 이것을 사용할 수 있습니다.

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

참고로 postgres의 매우 불행한 단점이라고 생각합니다. 덤프를 만드는 기본 방법 pg_dump은와 호환되지 않습니다 pg_restore. 그러나 몇 가지 추가 키가 있습니다. WTF?