입력 파일이 텍스트 형식 덤프인 것 같습니다.psql을 사용하십시오.
다음을 사용하여 백업을 수행합니다.
pg_dump db_production > postgres_db.dump
그런 다음 scp를 사용하여 로컬 호스트에 복사합니다.
이제 로컬 데이터베이스를 가져오면 오류가 발생합니다.
pg_restore: [archiver] input file appears to be a text format dump. Please use psql.
통신선을 사용하여
pg_restore -d db_development postgres_db.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
설명서에서 다음을 참조하십시오.
예
mydb라는 데이터베이스를 사용자 지정 형식의 덤프 파일에 덤프했다고 가정합니다.
$ pg_dump -Fc mydb > db.dump
데이터베이스를 삭제하고 덤프에서 재생성하려면 다음과 같이 하십시오.
$ dropdb mydb
$ pg_restore -C -d postgres db.dump
위의 대답은 저에게 효과가 없었습니다. 이것은 효과가 있었습니다.
psql db_development < postgres_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
원격 호스트에서 복원을 시도할 때 사용하는 경우
psql -U username -p 5432 -h 10.10.10.1 -d database < db.dump
잘 작동했습니다.원격이 아니라면 명령을 따르는 것만으로도 작동했습니다.
psql -d database < db.dump
저는 이런 식으로 작동합니다.
C:\Program Files\PostgreSQL\12\bin> psql -U postgres -p 5432 -d dummy -f C:\Users\Downloads\d2cm_test.sql
DBeaver로 db를 백업하려고 할 때 동일한 오류가 발생했습니다.Windows에서 명령줄 대신 DBeaver 인터페이스를 사용하는 경우 백업 및 복원 설정 중에 선택한 형식을 tar로 지정해야 합니다.
복원하는 경우.SQL 파일입니다.pgAdmin에서 새 데이터베이스를 만듭니다.터미널로 이동하여 .sql 파일이 있는 폴더/디렉토리를 탐색합니다.그런 다음 터미널에 다음 명령을 입력합니다.
구문: supername user postgres psql newDatabase name < input file.sql
예:
sudo -u postgres psql newDb < restoreDb.sql
전체 DB 덤프가 있는 경우:
PGPASSWORD="your_pass" psql -h "your_host" -U "your_user" -d "your_database" -f backup.sql
그러나 스키마를 별도로 보관하면 작동하지 않습니다.그런 다음 데이터 삽입에 대한 트리거를 비활성화해야 합니다.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
참고로, 저는 그것이 포스트그레스의 매우 불행한 단점이라고 생각합니다.덤프를 만드는 기본 방법pg_dump
호환되지 않음pg_restore
하지만 몇 개의 추가 키를 사용하면 됩니다. WTF?
psql -U <username> -d <database-name> -h <host-name> -f <backup.sql>
-Fp와 함께 pg_dump를 사용하여 일반 텍스트 형식으로 백업하는 경우 다음 명령을 사용합니다.
cat db.txt | psql dbname
이름이 dbname인 데이터베이스에 모든 데이터를 복사합니다.
나에게 효과가 있었고 대부분의 경우 당신에게도 효과가 있을 간단한 한 줄 답변 제공
psql -U 사용자 이름 -database_name < dump_file.sql
위에 역할 관련 오류가 표시되면 사용자 이름을 postgres로 대체합니다.
psql -U postgres -database_name < dump_file.sql
백업을 생성할 때 다른 네트워크에서 복원하거나 원격 복원을 생성할 수 있습니다.
는 다을사여파생합니다성야해를 사용하여 .--format=custom
[-Fc
를 사용하여 합니다.pg_restore
문자열 연결문을사수있다습니용할열을 사용할 수.postgresql://<user>:<pass>@localhost:5432/<dbname>
를 대체합니다.<user>
,<pass>
,그리고.<dbname>
당신의 정보와 함께.
pg_dump -v -Fc \
postgresql://<user>:<pass>@localhost:5432/<dbname> \
> db-20211122-163508.sql
복원하려면 다음을 사용하여 호출합니다.--clean
[-c
및 ] 및--create
[-C
하기 전에 복원하기 전에 데이터베이스를 삭제합니다.를 바꿉니다.<user>
,<host>
,<port>
,그리고.<dbname>
당신의 정보와 함께.
pg_restore -vcC \
-U <user> \
-h <host> \
-p <port> \
-d <dbname> \
< db-20211122-163508.sql
이 방법으로 백업하면 데이터베이스를 가져오는 것이 더 쉬울 것 같습니다.
pg_dump -h (원격 DB 주소) -a --column-inserts -U postgres (데이터베이스 이름) > (파일 이름).sql
가져오기의 경우,
psql
이름f(파일 이름).sql sql
주소) --host (DB 주소)
-- 트포 5432
--상당한 체하는 사람
)--password(비밀번호)
)--dbname(가져올 항목)
저도 이것 때문에 고생하고 있습니다.다음은 Dump & Restore 명령어의 조합입니다.
pg_dump -Ft -C -h database_host -U username database > DATA.dump
복원하려면
pg_restore -x --no-owner -d database DATA.dump
DB에 동일한 접근 권한(ACL)을 유지하려면 -x 플래그를 제거합니다.이 작업을 수행하려면 데이터베이스에 동일한 역할 및 사용자가 있어야 합니다.
https://www.postgresql.org/docs/15/app-pgdump.html
https://www.postgresql.org/docs/15/app-pgrestore.html
여기 해결책이 있습니다.
pg_restore -U 사용자 이름 -p 5432 -h 10.10.10.1 -d database_name < dump_file
언급URL : https://stackoverflow.com/questions/40632228/input-file-appears-to-be-a-text-format-dump-please-use-psql
'programing' 카테고리의 다른 글
log4Net에 추적 수준이 없는 이유는 무엇입니까? (0) | 2023.05.11 |
---|---|
npm install - gless가 작동하지 않음: EACCES: 권한이 거부됨 (0) | 2023.05.11 |
에 대한 링커 상태.NET 앱("Please Sir, May I have a Linker" 2009년판) (0) | 2023.05.11 |
Angular 2에서 동적으로 CSS 업데이트 (0) | 2023.05.11 |
Mongo DB - 독립 실행형 및 1노드 복제본 세트의 차이점 (0) | 2023.05.11 |