Dopo i suggerimenti di user30184 , Paul Ramsey e i miei esperimenti. Ho deciso di rispondere a questa domanda.
In questa domanda non ho menzionato che sto importando dati su un server remoto. (anche se è descritto nel post sul blog a cui mi riferisco). Operazioni come inserti su Internet sono soggette a latenza di rete. Forse non è irrilevante menzionare che questo server si trova su Amazon RDS , il che mi impedisce di eseguire SSH sulla macchina ed eseguire operazioni localmente.
Tenendo presente questo, ho riprogettato il mio approccio, usando la direttiva "\ copy" per promuovere un dump dei dati in una nuova tabella. Penso che questa strategia sia una chiave essenziale, a cui è stato fatto riferimento anche nei commenti / risposte a questa domanda.
psql database -U user -h host.eu-west-1.rds.amazonaws.com -c "\copy newt_table from 'data.csv' with DELIMITER ','"
Questa operazione è stata incredibilmente veloce. Da quando ho importato un CSV, ho quindi avuto tutto il lavoro di popolare la geometria, aggiungendo un indice spaziale, ecc. Era ancora notevolmente veloce, dato che stavo eseguendo query sul server .
Ho deciso di confrontare anche i suggerimenti di user30184 , Paul Ramsey . Il mio file di dati era un file di punti con 3035369 record e 82 MB.
L'approccio ogr2ogr (usando la direttiva PG_USE_COPY) è terminato in 1:03:00 m, che è ancora * molto meglio di prima.
L'approccio shp2pgsql (usando la direttiva -D) è terminato in soli 00:01:04 m.
Vale la pena dire che ogr2ogr ha creato un indice spaziale durante l'operazione, mentre shp2pgsql no. Scopro che è molto più efficiente creare l'indice dopo aver effettuato l'importazione, piuttosto che gonfiare l'operazione di importazione con questo tipo di richiesta.
La conclusione è: shp2pgsql, se opportunamente parametrizzato, è estremamente adatto per eseguire grandi importazioni, vale a dire quelle da ospitare all'interno dei Amazon Web Services.
Puoi leggere una descrizione più dettagliata di queste conclusioni, sull'aggiornamento di questo post.