mirror of
https://github.com/jbranchaud/til
synced 2026-01-03 15:18:01 +00:00
39 lines
1.2 KiB
Markdown
39 lines
1.2 KiB
Markdown
# Dump All Databases To A SQL File
|
|
|
|
I recently needed to reinstall my local Postgres installation. I had several
|
|
databases with data in that cluster that I wanted to preserve. Before I could
|
|
go uninstalling and re-installing Postgres, I needed to dump the entire cluster
|
|
of databases.
|
|
|
|
The `pg_dumpall` command that installs with Postgres can be used for this.
|
|
|
|
```bash
|
|
$ pg_dumpall > postgres_13_1_cluster_dump.sql
|
|
```
|
|
|
|
The command outputs to stdout a SQL dump of all the databases stored in the
|
|
data directory of this Postgres instance.
|
|
|
|
I took this a step further and ignored the `template0` and `template1`
|
|
directories because I knew those would come with the new install. I did that by
|
|
adding the `--exclude-database` flag with a pattern.
|
|
|
|
```bash
|
|
$ pg_dumpall \
|
|
--exclude-database="template*" \
|
|
> postgres_13_1_cluster_dump.sql
|
|
```
|
|
|
|
This data dump can be restored with the new install using:
|
|
|
|
```bash
|
|
$ psql -f postgres_13_1_cluster_dump.sql postgres
|
|
```
|
|
|
|
I wrote more about this process in [Reinstall Postgres with OpenSSL Using
|
|
asdf](https://dev.to/jbranchaud/reinstall-postgresql-with-openssl-using-asdf-cmj).
|
|
|
|
Also, see `pg_dumpall --help` or the [Postgres
|
|
docs](https://www.postgresql.org/docs/current/app-pg-dumpall.html) for more
|
|
details.
|