Câu trả lời:
Sử dụng --tableđể cho biết pg_dumpnó phải sao lưu bảng nào:
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. Câu trả lời của Prashant Kumar, đơn giản hơn, đã làm việc cho tôi.
Nếu bạn đang dùng Ubuntu,
sudo su postgrespg_dump -d <database_name> -t <table_name> > file.sqlĐảm bảo rằng bạn đang thực thi lệnh nơi postgresngười dùng có quyền ghi (Ví dụ /tmp:)
Biên tập
Nếu bạn muốn kết xuất .sql trong một máy tính khác, bạn có thể cần xem xét bỏ qua thông tin chủ sở hữu được lưu vào tệp .sql.
Bạn có thể dùng 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
Bạn có thể lấy bản sao lưu của một bảng duy nhất nhưng tôi khuyên bạn nên sao lưu toàn bộ cơ sở dữ liệu và sau đó khôi phục bất kỳ bảng nào bạn cần. Nó luôn luôn tốt để có bản sao lưu của toàn bộ cơ sở dữ liệu.
max(id)trên bàn của tôi. đây là câu trả lời phù hợp và tôi tự tin, nhìn vào sql được tạo ra, rằng tôi có thể đã khôi phục nó.
Nếu bạn thích giao diện người dùng đồ họa, bạn có thể sử dụng pgAdmin III (Linux / Windows / OS X). Chỉ cần nhấp chuột phải vào bảng bạn chọn, sau đó "sao lưu". Nó sẽ tạo ra một pg_dumplệnh cho bạn.
Ngoài câu trả lời của Frank Heiken, nếu bạn muốn sử dụng INSERTcâu lệnh thay vì copy from stdin, thì bạn nên chỉ định --insertscờ
pg_dump --host localhost --port 5432 --username postgres --format plain --verbose --file "<abstract_file_path>" --table public.tablename --inserts dbname
Lưu ý rằng tôi đã bỏ --ignore-versioncờ, vì nó không được dùng nữa.
pg_restore --host localhost --port 5432 --username postgres --dbname "anydb" --table public.tablename -Ft --verbose "/path/filename.backup"nhưng nó đã xuất hiện:pg_restore: [tar archiver] corrupt tar header found in --