PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Qual è il modo migliore per copiare un sottoinsieme di righe di una tabella da un database all'altro in Postgres?

Fonte:

psql -c "COPY (SELECT * FROM mytable WHERE ...) TO STDOUT" > mytable.copy

Destinazione:

psql -c "COPY mytable FROM STDIN" < mytable.copy

Ciò presuppone che mytable abbia lo stesso schema e l'ordine delle colonne sia nell'origine che nella destinazione. In caso contrario, puoi provare STDOUT CSV HEADER e STDIN CSV HEADER invece di STDOUT e STDIN , ma non l'ho provato.

Se hai dei trigger personalizzati su mytable, potresti dover disabilitarli durante l'importazione:

psql -c "ALTER TABLE mytable DISABLE TRIGGER USER; \
         COPY mytable FROM STDIN; \
         ALTER TABLE mytable ENABLE TRIGGER USER" < mytable.copy