sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Cuál es la mejor manera de copiar un subconjunto de las filas de una tabla de una base de datos a otra en Postgres?

Fuente:

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

Destino:

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

Esto supone que mytable tiene el mismo esquema y orden de columnas tanto en el origen como en el destino. Si este no es el caso, puede intentar STDOUT CSV HEADER y STDIN CSV HEADER en lugar de STDOUT y STDIN , pero no lo he probado.

Si tiene disparadores personalizados en mytable, es posible que deba deshabilitarlos en la importación:

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