Tengo que importar grandes Shapefiles (> 1 millón de registros) en PostGIS, y me he estado preguntando cuál es la mejor manera de hacerlo.
En mi pregunta, utilicé la palabra "piratear", en lugar de herramienta, a propósito porque creo que no se trata tanto de qué herramienta, sino de qué conjunto de pasos o configuraciones de configuración usar. Hasta ahora, he probado el complemento SPIT (QGIS), la herramienta Shp2pgsql Postgis y la herramienta GDAL ogr2ogr . Puedes ver mi reseña completa en esta publicación. Hasta ahora, encuentro que todos ellos realmente no responden, cuando se trata de un gran conjunto de datos. Me preguntaba si alguien experimentó un problema similar y si podría compartir algo sobre el enfoque.
Después de las sugerencias del usuario 30184 , Paul Ramsey y mis propios experimentos. Decidí responder esta pregunta.
No mencioné en esta pregunta que estoy importando datos a un servidor remoto. (aunque se describe en la publicación de blog a la que me refiero). Las operaciones como las inserciones en Internet están sujetas a una latencia de red. Tal vez no sea irrelevante mencionar que este servidor está en Amazon RDS , lo que me impide enviar ssh a la máquina y ejecutar operaciones localmente.
Teniendo esto en cuenta, rediseñé mi enfoque, utilizando la directiva "\ copy" para promover un volcado de los datos en una nueva tabla. Creo que esta estrategia es una clave esencial, que también se mencionó en los comentarios / respuestas a esta pregunta.
Esta operación fue increíblemente rápida. Desde que importé un csv, tuve todo el trabajo de completar la geometría, agregar un índice espacial, etc. Todavía era notablemente rápido, ya que estaba ejecutando consultas en el servidor .
Decidí comparar también las sugerencias del usuario 30184 , Paul Ramsey . Mi archivo de datos era un archivo de forma puntual con 3035369 registros y 82 MB.
El enfoque ogr2ogr (usando la directiva PG_USE_COPY) terminó en 1:03:00 m, que todavía es * mucho mejor que antes.
El enfoque shp2pgsql (usando la directiva -D) terminó en solo 00:01:04 m.
Vale la pena decir que ogr2ogr creó un índice espacial durante la operación, mientras que shp2pgsql no lo hizo. Descubrí que es mucho más eficiente crear el índice después de realizar la importación, en lugar de aumentar la operación de importación con este tipo de solicitud.
La conclusión es: shp2pgsql, cuando está correctamente parametrizado, es extremadamente adecuado para realizar grandes importaciones, es decir, aquellas que se realizarán dentro de Amazon Web Services.
Puede leer una descripción más detallada de estas conclusiones, en la actualización de esta publicación.
fuente