Saya harus mengimpor Shapefile besar (> 1 juta catatan) ke PostGIS, dan saya bertanya-tanya tentang cara terbaik untuk melakukannya.
Dalam pertanyaan saya, saya menggunakan kata "hack", bukan alat, sengaja karena saya pikir ini bukan masalah alat yang mana, tetapi yang mengatur langkah-langkah, atau pengaturan konfigurasi untuk digunakan. Sejauh ini, saya telah mencoba plugin SPIT (QGIS), alat Postgis shp2pgsql dan alat ogr2ogr GDAL . Anda dapat melihat ulasan lengkap saya di posting ini . Sejauh ini, saya menemukan semuanya benar-benar tidak responsif, ketika berhadapan dengan dataset besar. Saya bertanya-tanya apakah seseorang mengalami masalah yang sama, dan apakah Anda dapat membagikan sesuatu tentang pendekatan tersebut.
Setelah saran dari user30184 , Paul Ramsey dan eksperimen saya sendiri. Saya memutuskan untuk menjawab pertanyaan ini.
Saya gagal menyebutkan dalam pertanyaan ini bahwa saya mengimpor data ke server jauh. (meskipun dijelaskan dalam posting blog yang saya rujuk). Operasi seperti sisipan, melalui internet tunduk pada latensi jaringan. Mungkin tidak relevan untuk menyebutkan bahwa server ini ada di Amazon RDS , yang mencegah saya dari ssh ke mesin dan menjalankan operasi secara lokal.
Dengan memikirkan hal ini, saya merekayasa ulang pendekatan saya, menggunakan arahan "\ copy" untuk mempromosikan dump data ke tabel baru. Saya pikir strategi ini adalah kunci penting, yang juga merujuk pada komentar / jawaban untuk pertanyaan ini.
Operasi ini sangat cepat. Karena saya mengimpor csv, saya kemudian memiliki semua pekerjaan mengisi geometri, menambahkan indeks spasial, dll. Itu masih sangat cepat, karena saya kemudian menjalankan kueri di server .
Saya memutuskan untuk patokan juga saran dari user30184 , Paul Ramsey . File data saya adalah shapefile titik dengan 3035369 catatan, dan 82 MB.
Pendekatan ogr2ogr (menggunakan arahan PG_USE_COPY) selesai pada 1:03:00 m, yang masih * jauh lebih baik dari sebelumnya.
Pendekatan shp2pgsql (menggunakan direktif -D) selesai hanya dalam 00:01:04 m.
Layak untuk mengatakan bahwa ogr2ogr membuat indeks spasial selama operasi, sementara shp2pgsql tidak. Saya menemukan bahwa jauh lebih efisien untuk membuat indeks setelah melakukan impor, daripada membengkak operasi impor dengan jenis permintaan ini.
Kesimpulannya adalah: shp2pgsql, ketika diparameterisasi dengan benar, sangat cocok untuk melakukan impor besar, yaitu yang akan diakomodasikan di dalam Layanan Web Amazon.
Anda dapat membaca deskripsi yang lebih rinci dari kesimpulan ini, pada pembaruan posting ini .
sumber