После предложения пользователя user30184 , Пола Рэмси и моих собственных экспериментов. Я решил ответить на этот вопрос.
В этом вопросе я не упомянул, что импортирую данные на удаленный сервер. (хотя это описано в блоге, на который я ссылаюсь). Операции, такие как вставки, через Интернет подвержены задержке в сети. Возможно, не имеет значения упоминать, что этот сервер находится на Amazon RDS , что не позволяет мне подключиться по ssh к компьютеру и выполнять операции локально.
Имея это в виду, я пересмотрел свой подход, используя директиву \ copy, чтобы создать дамп данных в новую таблицу. Я думаю, что эта стратегия является важным ключом, о котором также говорилось в комментариях / ответах на этот вопрос.
psql database -U user -h host.eu-west-1.rds.amazonaws.com -c "\copy newt_table from 'data.csv' with DELIMITER ','"
Эта операция была невероятно быстрой. Так как я импортировал CSV, у меня была вся работа по заполнению геометрии, добавлению пространственного индекса и т. Д. Это было все еще на удивление быстро, так как я тогда выполнял запросы на сервере .
Я решил также сравнить предложения от пользователя user30184 , Пола Рэмси . Мой файл данных представлял собой точечный шейп-файл с 3035369 записями и 82 МБ.
Подход ogr2ogr (с использованием директивы PG_USE_COPY) завершился через 1:03:00 м, что все еще * намного лучше, чем раньше.
Подход shp2pgsql (с использованием директивы -D) завершился всего за 00:01:04 м.
Стоит сказать, что во время операции ogr2ogr создал пространственный индекс, а shp2pgsql - нет. Я обнаружил, что гораздо эффективнее создать индекс после выполнения импорта, чем раздувать операцию импорта с этим типом запроса.
Вывод таков: shp2pgsql, при правильной параметризации, очень хорошо подходит для выполнения больших импортов, а именно тех, которые должны быть размещены в Amazon Web Services.
Более подробное описание этих выводов вы можете прочитать в обновлении этого поста.