HiveBrain v1.2.0
Get Started
← Back to all entries
patternsqlMajor

Copy PostgreSQL database from a remote server

Submitted by: @import:stackexchange-dba··
0
Viewed 0 times
postgresqlserverdatabaseremotefromcopy

Problem

When I was using MySQL, I could run a command that would SSH into my server and copy the database to my local machine.

ssh -t remoteserver 'mysqldump --compress -u dbuser --password="password" db_name' | /usr/local/mysql/bin/mysql -u root --password="password" local_db_name


How can I do the same thing with PostgreSQL?

Solution

If the DB server takes database connections from your host (usually on port 5432), then you don't need to use SSH. In this case, you need to do the following:

pg_dump -h your_db_host -U db_user -C db_name | psql -h localhost -d local_db_name -U local_db_user


If you can only connect to your database from the host itself, you have to add the SSH logic from your MySQL example.

With -C, you will get a CREATE DATABASE command in the beginning of the dump so you don't have to create it yourself. The above command will ask for a password twice unless you store these in a .pgpass file (assuming you are on linux/Unix). Also, the local connection may be different if your DB doesn't listen on TCP (in this case just omit the -h localhost part).

For further details and options, see pg_dump documentation.

Code Snippets

pg_dump -h your_db_host -U db_user -C db_name | psql -h localhost -d local_db_name -U local_db_user

Context

StackExchange Database Administrators Q#55291, answer score: 21

Revisions (0)

No revisions yet.