Ich muss große Shapefiles (> 1 Million Datensätze) in PostGIS importieren und habe mich gefragt, wie ich das am besten machen kann.
In meiner Frage habe ich absichtlich das Wort "Hack" anstelle von "Tool" verwendet, da es meiner Meinung nach nicht so sehr darum geht, welches Tool, sondern welche Schritte oder Konfigurationseinstellungen verwendet werden sollen. Bisher habe ich das versucht SPIT Plugin (QGIS), das shp2pgsql Postgis - Tool und das GDAL ogr2ogr Werkzeug. Sie können meine vollständige Rezension zu diesem Beitrag anzeigen . Bisher habe ich festgestellt, dass sie alle bei einem großen Datensatz wirklich nicht reagieren. Ich habe mich gefragt, ob jemand ein ähnliches Problem hat und ob Sie etwas über den Ansatz mitteilen können.
Nach den Vorschlägen von User30184 , Paul Ramsey und meinen eigenen Experimenten. Ich habe beschlossen, diese Frage zu beantworten.
Ich habe in dieser Frage nicht erwähnt, dass ich Daten auf einen Remote-Server importiere. (obwohl es in dem Blog-Beitrag beschrieben ist, auf den ich mich beziehe). Vorgänge wie Einfügungen über das Internet unterliegen einer Netzwerklatenz. Vielleicht ist es nicht unerheblich zu erwähnen, dass sich dieser Server auf Amazon RDS befindet , was mich daran hindert, ssh auf den Computer zu laden und Vorgänge lokal auszuführen.
Vor diesem Hintergrund habe ich meinen Ansatz überarbeitet und die Direktive "\ copy" verwendet, um ein Abbild der Daten in einer neuen Tabelle zu erstellen. Ich denke, diese Strategie ist ein wesentlicher Schlüssel, auf den auch in den Kommentaren / Antworten zu dieser Frage verwiesen wurde.
Diese Operation war unglaublich schnell. Da ich eine CSV importiert habe, musste ich die gesamte Geometrie ausfüllen, einen räumlichen Index hinzufügen usw. Es war immer noch bemerkenswert schnell, da ich damals Abfragen auf dem Server ausführte .
Ich habe mich entschlossen, auch die Vorschläge von user30184 , Paul Ramsey, zu vergleichen . Meine Datendatei war ein Punkt-Shapefile mit 3035369 Datensätzen und 82 MB.
Der ogr2ogr-Ansatz (mit der PG_USE_COPY-Direktive) endete in 1:03:00 m, was immer noch viel besser ist als zuvor.
Der shp2pgsql-Ansatz (unter Verwendung der -D-Direktive) endete in nur 00:01:04 m.
Es ist anzumerken, dass ogr2ogr während der Operation einen räumlichen Index erstellt hat, shp2pgsql jedoch nicht. Ich finde heraus , dass es effizienter ist , den Index zu erstellen , nachdem tat die Einfuhr, anstatt Blähungen den Importvorgang mit dieser Art der Anfrage.
Die Schlussfolgerung lautet: shp2pgsql ist bei richtiger Parametrisierung hervorragend für große Importe geeignet, insbesondere für solche, die in Amazon Web Services untergebracht werden sollen.
Eine ausführlichere Beschreibung dieser Schlussfolgerungen finden Sie in der Aktualisierung dieses Beitrags.
quelle