Je dois importer des fichiers Shapefiles volumineux (> 1 million d'enregistrements) dans PostGIS, et je me suis demandé quelle était la meilleure façon de le faire.
Dans ma question, j'ai utilisé le mot "hack", au lieu d'outil, exprès parce que je pense que ce n'est pas tant une question de quel outil, mais de quel ensemble d'étapes ou de paramètres de configuration à utiliser. Jusqu'à présent, j'ai essayé le plugin SPIT (QGIS), l' outil shp2pgsql Postgis et l' outil GDAL ogr2ogr . Vous pouvez consulter mon avis complet sur ce post. Jusqu'à présent, je trouve que tous ne répondent vraiment pas lorsqu'il s'agit d'un grand ensemble de données. Je me demandais si quelqu'un avait rencontré un problème similaire et si vous pouviez partager quelque chose sur l'approche.
Après les suggestions de user30184 , Paul Ramsey et mes propres expériences. J'ai décidé de répondre à cette question.
Je n'ai pas mentionné dans cette question que j'importais des données vers un serveur distant. (bien qu'il soit décrit dans le billet de blog auquel je fais référence). Les opérations telles que les insertions sur Internet sont soumises à une latence du réseau. Il n'est peut-être pas inutile de mentionner que ce serveur est sur Amazon RDS , ce qui m'empêche de ssh vers la machine et d'exécuter des opérations localement.
Dans cet esprit, j'ai repensé mon approche, en utilisant la directive "\ copy" pour promouvoir un vidage des données dans une nouvelle table. Je pense que cette stratégie est une clé essentielle, qui a également été mentionnée dans les commentaires / réponses à cette question.
Cette opération a été incroyablement rapide. Depuis que j'ai importé un csv, j'ai ensuite eu tout le travail de remplir la géométrie, d'ajouter un index spatial, etc. C'était encore remarquablement rapide, car j'exécutais alors des requêtes sur le serveur .
J'ai décidé de comparer également les suggestions de user30184 , Paul Ramsey . Mon fichier de données était un fichier de formes ponctuelles avec 3035369 enregistrements et 82 Mo.
L'approche ogr2ogr (utilisant la directive PG_USE_COPY) s'est terminée en 1:03:00 m, ce qui est toujours * bien meilleur qu'auparavant.
L'approche shp2pgsql (utilisant la directive -D) s'est terminée en 00:01:04 m seulement.
Il vaut la peine de dire que ogr2ogr a créé un index spatial pendant l'opération, contrairement à shp2pgsql. Je découvre qu'il est beaucoup plus efficace de créer l'index après avoir effectué l'importation, plutôt que de gonfler l'opération d'importation avec ce type de demande.
La conclusion est la suivante: shp2pgsql, lorsqu'il est correctement paramétré, est extrêmement bien adapté pour effectuer des importations importantes, à savoir celles à héberger dans Amazon Web Services.
Vous pouvez lire une description plus détaillée de ces conclusions, sur la mise à jour de cet article.
la source