PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Qual é a melhor maneira de copiar um subconjunto de linhas de uma tabela de um banco de dados para outro no Postgres?


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

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

Isso pressupõe que mytable tenha o mesmo esquema e ordem de coluna na origem e no destino. Se este não for o caso, você pode tentar STDOUT CSV HEADER e STDIN CSV HEADER em vez de STDOUT e STDIN , mas não testei.

Se você tiver gatilhos personalizados em mytable, talvez seja necessário desativá-los na importação:
psql -c "ALTER TABLE mytable DISABLE TRIGGER USER; \
         COPY mytable FROM STDIN; \
         ALTER TABLE mytable ENABLE TRIGGER USER" < mytable.copy