Postgres-compatible export from Neon
This topic describes how to export your Neon database to a Postgres compatible archive using the Postgres pg_dump utility. You get a normal custom format dump (for example Fc) that any Postgres toolch...
This topic describes how to export your Neon database to a Postgres-compatible archive using the Postgres pg_dump utility. You get a normal custom-format dump (for example -Fc) that any Postgres toolchain can consume.
Once you have the archive, importing it is standard Postgres tooling. The Restore on your destination section below shows a pg_restore command that pairs with the -Fc export. You must still check your destination Postgres platform or provider. Their docs are authoritative for SSL, networking, extensions, roles, empty-database requirements, and any managed import UI they offer.
Export steps on Neon
Section titled “Export steps on Neon”-
In the Neon Console, open Connect and turn Connection pooling off. Copy the connection string.
-
Run
pg_dumpin custom format (-Fc) and write a dump file:Bash pg_dump -Fc -v -d "<neon_database_connection_string>" -f <dump_file_name>With your Neon URL and a file name filled in, a command looks like this:
Bash pg_dump -Fc -v -d "postgresql://alex:AbC123dEf@ep-cool-darkness-123456.us-east-2.aws.neon.tech/neondb?sslmode=require&channel_binding=require" -f mydatabase.bakThe
pg_dumparguments above:-Fc: Custom-format archive forpg_restore.-v: Verbose output during the dump.-d: Your Neon database connection string.-f: Output file path (for examplemydatabase.bak).
-
Store the file where your restore environment can reach it securely.
Each pg_dump run covers one Neon database. If your project has multiple databases, run pg_dump again with the other connection strings (and separate dump files).
For installing pg_dump on your machine, see Backups with pg_dump. For advanced options, ownership, and piping, see Migrate data from Postgres with pg_dump and pg_restore.
Restore on your destination withpg_restore
Section titled “Restore on your destination withpg_restore”A custom-format dump (-Fc) from Neon is restored with pg_restore. Use the same dump file you wrote with pg_dump -f in Export steps on Neon (the examples below use mydatabase.bak to match the export example).
Before you run this: Confirm with your destination’s documentation that pg_restore against a custom-format (-Fc) archive is supported.
- Postgres version: Plan for the destination server to run a Postgres major version that matches your Neon database or is newer. Restoring into an older major version than the cluster you dumped from often fails. If versions differ, follow your provider’s compatibility guidance and test first.
- Extensions and settings: The destination must support the extensions and features your Neon database uses, or you adjust before cutover.
- Roles: Source and destination role names often differ. Plan for
-O/--no-owneronpg_restore(see below) so restores do not depend on matching role OIDs.
Install pg_dump and pg_restore builds that your Neon Postgres version and your destination provider support (if the two differ, follow each side’s client guidance; see pg_restore in the Postgres manual).
-
Create or select a target database on your destination as their docs require (empty is typical so objects from the dump do not collide with existing schema or data).
-
Obtain a connection string for that database.
-
Run
pg_restoreagainst the destination, passing the dump file path last (same role as-fonpg_dump):Bash pg_restore -v -d "<destination_database_connection_string>" <dump_file_name>With your destination URL and the same file name you used when exporting, a command looks like this:
Bash pg_restore -v -d "postgresql://user:password@db.example.com:5432/mydb?sslmode=require" mydatabase.bakThe
pg_restorearguments above:-v: Verbose output while restoring.-d: Target database connection string (your provider’s URL format and query parameters).<dump_file_name>: The custom-format archive frompg_dump(for examplemydatabase.bakfrom thepg_dumpcommand in Export steps on Neon).
If restore fails on ownership or role statements, try adding -O and consult Database object ownership considerations. For more flags (parallel jobs, schema-only, exclusions), see Advanced pg_dump and pg_restore options.
Related
Section titled “Related”Need help?
Section titled “Need help?”Join our Discord Server to ask questions or see what others are doing with Neon. For paid plan support options, see Support.