Is there a way to create a backup of a single table within a database using postgres? And how? Does this also work with the pg_dump command?
8 Answers
Use --table to tell pg_dump what table it has to backup:
pg_dump --host localhost --port 5432 --username postgres --format plain --verbose --file "<abstract_file_path>" --table public.tablename dbname
13 Comments
pg_restore --host localhost --port 5432 --username postgres --dbname "anydb" --table public.tablename -Ft --verbose "/path/filename.backup" but it came out: pg_restore: [tar archiver] corrupt tar header found in --psql -U username -d database -1 -f your_dump.sqlIf you are on Ubuntu,
- Login to your postgres user
sudo su postgres pg_dump -d <database_name> -t <table_name> > file.sql
Make sure that you are executing the command where the postgres user have write permissions (Example: /tmp)
Edit
If you want to dump the .sql in another computer, you may need to consider skipping the owner information getting saved into the .sql file.
You can use pg_dump --no-owner -d <database_name> -t <table_name> > file.sql
7 Comments
pg_dump -d <database_name> > file.sqlpg_dump -t <table_name> <database_name> > file.sqlpg_dump -h localhost -p 5432 -U postgres -d mydb -t my_table > backup.sql
You can take the backup of a single table but I would suggest to take the backup of whole database and then restore whichever table you need. It is always good to have backup of whole database.
2 Comments
max(id) on my table. this is the answer that worked for and I am confident, looking at the generated sql, that I could have restored it.you can use this command
pg_dump --table=yourTable --data-only --column-inserts yourDataBase > file.sql
you should change yourTable, yourDataBase to your case
1 Comment
As an addition to Frank Heiken's answer, if you wish to use INSERT statements instead of copy from stdin, then you should specify the --inserts flag
pg_dump --host localhost --port 5432 --username postgres --format plain --verbose --file "<abstract_file_path>" --table public.tablename --inserts dbname
Notice that I left out the --ignore-version flag, because it is deprecated.
1 Comment
Here is how I do it.
pg_dump -h localhost -U postgres -p 5432 -t table database > path/to/store/name.sql
You can edit this sql file and remove the table creation commands and setting of other fields if you don't want that to happen and later run the below command to insert the data in the other database.
psql -h localhost -U postgres -p 5432 database < path/to/store/name.sql


