Після пропозицій користувача 30184 , Пол Рамзі та мої власні експерименти. Я вирішив відповісти на це питання.
У цьому питанні я не зазначив, що я імпортую дані на віддалений сервер. (хоча це описано в публікації блогу, на яку я посилаюсь). Такі операції, як вставки через Інтернет, залежать від затримки в мережі. Можливо, неважливо згадати, що цей сервер працює на 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, у мене тоді була робота над заповненням геометрії, додаванням просторового індексу і т. Д. Це все ще було надзвичайно швидко, оскільки я виконував запити на сервері .
Я вирішив порівняти також пропозиції користувача 30184 , Пол Рамзі . Мій файл даних був точковим файлом форми з 3035369 записами та 82 Мб.
Підхід ogr2ogr (з використанням директиви PG_USE_COPY) закінчився за 1:03:00 м, що все ще * набагато краще, ніж раніше.
Підхід shp2pgsql (з використанням директиви -D) завершився лише 00:01:04 м.
Варто сказати, що ogr2ogr створив просторовий індекс під час операції, тоді як shp2pgsql цього не зробив. Я знаходжу, що набагато ефективніше створювати індекс після імпорту, а не здувати операцію імпорту таким запитом.
Висновок такий: shp2pgsql, при правильній параметризації, надзвичайно добре підходить для великого імпорту, а саме для розміщення в веб-сервісах Amazon.
Більш детальний опис цих висновків ви можете прочитати в оновлення цього допису.