Źródło:
psql -c "COPY (SELECT * FROM mytable WHERE ...) TO STDOUT" > mytable.copy
Miejsce docelowe:
psql -c "COPY mytable FROM STDIN" < mytable.copy
Zakłada się, że mytable ma ten sam schemat i kolejność kolumn zarówno w źródle, jak i miejscu docelowym. Jeśli tak nie jest, możesz spróbować STDOUT CSV HEADER
i STDIN CSV HEADER
zamiast STDOUT
i STDIN
, ale nie próbowałem.
Jeśli masz jakieś niestandardowe wyzwalacze w mytable, może być konieczne wyłączenie ich podczas importu:
psql -c "ALTER TABLE mytable DISABLE TRIGGER USER; \
COPY mytable FROM STDIN; \
ALTER TABLE mytable ENABLE TRIGGER USER" < mytable.copy