# Dump and Restore Handy commands for dumping and restoring Postgres databases. ::: info Most of these commands are run using Docker as then we don't need to have Postgres installed locally. If a different version of Postgres is needed, just change the version number in the Docker image tag. ::: ## Setup Create a pgpass file in the current directory with the following content: ``` :::: ``` ::: tip Use `*` as a wildcard for any of the fields except for the password. ::: ## Dumping a Database ```bash docker run --network host --rm -v .:/tmp -v ./pgpass:/root/.pgpass -e PGPASSFILE=/root/.pgpass postgres:16 bash -c "chmod 600 /root/.pgpass && pg_dump -h -p -U -f /tmp/$(date +%Y%m%d_%H%M%S)__dump.sql -c --if-exists" ``` ## Dumping a Cluster ```bash docker run --network host --rm -v .:/tmp -v ./pgpass:/root/.pgpass -e PGPASSFILE=/root/.pgpass postgres:16 bash -c "chmod 600 /root/.pgpass && pg_dumpall -h -p -U -f /tmp/$(date +%Y%m%d_%H%M%S)__cluster_dump.sql -c --if-exists" ``` ## Restoring from a SQL Dump ```bash docker run --network host --rm -v .:/tmp -v ./pgpass:/root/.pgpass -e PGPASSFILE=/root/.pgpass postgres:16 bash -c "chmod 600 /root/.pgpass && psql -h -p -U -f /tmp/dump.sql -X" ```