Список подсказок по этой теме содержится в разделе Заполнение базы данных документации. Вы можете повысить общую производительность, используя подсказки в Настройка сервера PostgreSQL .
Затраты на проверку внешних ключей могут увеличиваться при увеличении размера таблицы, что ухудшается из-за загрузки по одной записи за раз. Если вы загружаете данные объемом 70 ГБ, гораздо быстрее будет отбрасывать внешние ключи во время загрузки, а затем перестраивать их при импорте. Это особенно верно, если вы используете отдельные операторы INSERT. Переключение на COPY вместо этого также не является гарантированным улучшением из-за того, как обрабатывается очередь отложенных триггеров - проблемы, которые обсуждаются в этой первой ссылке на документацию.
В приглашении psql вы можете найти имя ограничения, применяющего ваш внешний ключ, а затем удалить его, используя это имя, например:
\d tablename
ALTER TABLE tablename DROP CONSTRAINT constraint_name;
Когда вы закончите загрузку, вы можете положить ее обратно, используя что-то вроде:
ALTER TABLE tablename ADD CONSTRAINT constraint_name FOREIGN KEY (other_table) REFERENCES other_table (join_column);
Один полезный трюк, чтобы выяснить точный синтаксис, который нужно использовать для восстановления, - это сделать pgdump --schema-only в вашей базе данных. Из этого дампа вы узнаете, как воссоздать структуру, которая у вас есть сейчас.