sql >> Databasteknik >  >> RDS >> PostgreSQL

Vad är det bästa sättet att kopiera en delmängd av en tabells rader från en databas till en annan i Postgres?

Källa:

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

Destination:

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

Detta förutsätter att mytable har samma schema och kolumnordning i både källan och destinationen. Om så inte är fallet kan du prova STDOUT CSV HEADER och STDIN CSV HEADER istället för STDOUT och STDIN , men jag har inte provat det.

Om du har några anpassade utlösare på mytable kan du behöva inaktivera dem vid import:

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


  1. Uppdatera databasfältfel CodeIgniter

  2. Vad är MySQL-frågans motsvarighet till PHP strip_tags?

  3. Hur man får in ett värde för trigger

  4. Klona en post och använd sedan dess autoinkrement-id för ytterligare operationer