Thread: copy data from one db into another via copy & psql

copy data from one db into another via copy & psql

From
Kevin Kempter
Date:
Can I copy from one db (via COPY) and pipe the results to a psql/COPY stmt so
I can load the data into a table in the second db 'inline' without writing to
& reading from a flat file?

Re: copy data from one db into another via copy & psql

From
"A. Kretschmer"
Date:
In response to Kevin Kempter :
> Can I copy from one db (via COPY) and pipe the results to a psql/COPY stmt so
> I can load the data into a table in the second db 'inline' without writing to
> & reading from a flat file?

Yes, but keep in mind, COPY cant create the table on the destination. If
the destination contains a (empty) table it's no problem.

If the destination-db doesn't contain the table you can also use
pg_dump:

kretschmer@tux:~$ createdb new_test
kretschmer@tux:~$ pg_dump -t foo test | psql -X new_test -f -
SET
SET
SET
SET
SET
SET
SET
SET
SET
CREATE TABLE
ALTER TABLE
kretschmer@tux:~$ psql new_test -c "select * from foo"
      t
--------------
 a short test
(1 row)


Regards, Andreas
--
Andreas Kretschmer
Kontakt:  Heynitz: 035242/47150,   D1: 0160/7141639 (mehr: -> Header)
GnuPG: 0x31720C99, 1006 CCB4 A326 1D42 6431  2EB0 389D 1DC2 3172 0C99

Re: copy data from one db into another via copy & psql

From
Scott Marlowe
Date:
On Thu, May 20, 2010 at 10:59 PM, Kevin Kempter
<kevink@consistentstate.com> wrote:
> Can I copy from one db (via COPY) and pipe the results to a psql/COPY stmt so
> I can load the data into a table in the second db 'inline' without writing to
> & reading from a flat file?

That's pretty much what

pg_dump -t tablename -d dbname | psql dbname

does.  Add a -a and it's data only:

pg_dump -a -t tablename -d dbname | psql dbname

Re: copy data from one db into another via copy & psql

From
Jasen Betts
Date:
On 2010-05-21, Kevin Kempter <kevink@consistentstate.com> wrote:
> Can I copy from one db (via COPY) and pipe the results to a psql/COPY stmt so
> I can load the data into a table in the second db 'inline' without writing to
> & reading from a flat file?

Yes.

  COPY ... TO stdout;

at the source and

  COPY ... FROM stdin;

at the destination.



I use this with the

  COPY ( query ) TO  STDOUT ;

syntax when I want to copy only a few rows.