This guide describes how to migrate a database from one Neon project to another by piping output from pg_dump straight into pg_restore (pg_dump ... | pg_restore ...). That runs the dump and restore in one step without writing an intermediate dump file on disk.
important
Avoid using pg_dump over a pooled connection string. Use an unpooled connection string instead.
Important considerations
- Upgrading the Postgres version: When upgrading to a new version of Postgres, always test thoroughly before migrating your production systems or applications.
- Piping considerations: Piping simplifies the operation, but for large or complex datasets, we highly recommend a separate dump and restore. See Migrate data from Postgres with pg_dump and pg_restore.
Import data from another project
To import your data from another Neon project:
-
Create a new project with the desired region or Postgres version. See Create a project for instructions.
-
Create a database with the desired name in your new Neon project. See Create a database for instructions.
-
Retrieve the connection strings for the new and existing Neon databases.
You can find the connection details for your database by clicking the Connect button on your Project Dashboard. Connection strings have this format:
postgresql://[user]:[password]@[neon_hostname]/[dbname] -
Prepare your command to pipe data from one Neon project to the other. For the
pg_dumpcommand, specify connection details for the source database. For thepg_restorecommand, specify connection details for the destination database. The command should have the following format:pg_dump -Fc -v -d postgresql://[user]:[password]@[source_neon_hostname]/[dbname] | pg_restore -v -d postgresql://[user]:[password]@[destination_neon_hostname]/[dbname]With actual source and destination connection details, your command will appear similar to this:
pg_dump -Fc -v -d postgresql://alex:AbC123dEf@ep-cool-darkness-123456.us-east-2.aws.neon.tech/my_source_db?sslmode=require&channel_binding=require | pg_restore -v -d postgresql://alex:AbC123dEf@square-shadow-654321.us-east-2.aws.neon.tech/my_destination_db?sslmode=require&channel_binding=requirenote
While your source and destination databases might have the same name, the hostnames will differ, as illustrated in the example above.
The command includes these arguments:
-Fc: Sends the output to a custom-format archive suitable for input intopg_restore.-v: Runs commands in verbose mode, allowing you to monitor what happens during the operation.-d: Specifies the database name or connection string.
-
Run the command from your terminal or command window.
-
Run some test queries on the target database to ensure everything imported correctly.
-
Switch the connection string in your app to point to your new Neon database.
-
If you no longer need the old Neon project, you can remove it. See Delete a project for instructions.
Need help?
Join our Discord Server to ask questions or see what others are doing with Neon. For paid plan support options, see Support.








