답변:
백업 할 테이블 --table
을 알려주 pg_dump
는 데 사용하십시오 .
pg_dump --host localhost --port 5432 --username postgres --format plain --verbose --file "<abstract_file_path>" --table public.tablename dbname
psql -U username -d database -1 -f your_dump.sql
--ignore-version
. 더 간단한 Prashant Kumar의 답변이 저에게 효과적이었습니다.
우분투에 있다면
sudo su postgres
pg_dump -d <database_name> -t <table_name> > file.sql
당신이 명령을 실행하고 있는지 확인 postgres
사용자가 쓰기 권한이 (예 : /tmp
)
편집하다
다른 컴퓨터에서 .sql을 덤프하려면 .sql 파일에 저장된 소유자 정보를 건너 뛰는 것을 고려해야합니다.
당신이 사용할 수있는 pg_dump --no-owner -d <database_name> -t <table_name> > file.sql
pg_dump -d <database_name> > file.sql
pg_dump -t <table_name> <database_name> > file.sql
pg_dump -h localhost -p 5432 -U postgres -d mydb -t my_table> backup.sql
단일 테이블의 백업을 수행 할 수 있지만 전체 데이터베이스의 백업을 수행 한 다음 필요한 테이블을 복원하는 것이 좋습니다. 항상 전체 데이터베이스를 백업하는 것이 좋습니다.
max(id)
테이블 에서 시퀀스의 마지막 ID를 업데이트하는 방법을 찾을 것 입니다. 이것은 효과가 있었으며 생성 된 SQL을보고 복원 할 수 있다고 확신합니다.
Frank Heiken의 답변 외에도, INSERT
대신 문 을 사용 copy from stdin
하려면 --inserts
플래그를 지정해야합니다
pg_dump --host localhost --port 5432 --username postgres --format plain --verbose --file "<abstract_file_path>" --table public.tablename --inserts dbname
--ignore-version
더 이상 사용되지 않기 때문에 플래그를 생략했습니다 .
pg_restore --host localhost --port 5432 --username postgres --dbname "anydb" --table public.tablename -Ft --verbose "/path/filename.backup"
했지만 나왔다 :pg_restore: [tar archiver] corrupt tar header found in --