copy data from one db into another via copy & psql
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?
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
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
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.