Bagaimana saya bisa mentransfer data dari satu basis data PostGIS ke yang lain?


8

Saya memiliki cukup banyak data SIG dalam Database PostGIS lama (versi "1.1.6") dan saya perlu mentransfernya ke Database PostGIS lain ("POSTGIS =" 1.5.3 ").

Saya mencoba membuat cadangan dan memulihkannya di Database baru, tetapi ada beberapa ratus kesalahan.

Apa cara transfer data yang benar?


Sudahkah Anda menguji apakah itu berfungsi meskipun ada kesalahan?
RK

@RK Ya itu berhasil; Saya merasa bahwa mungkin ada beberapa korupsi data yang halus, yang mungkin tidak saya sadari. Saya juga bertanya-tanya apakah ada cara yang lebih baik untuk mentransfer data tanpa kesalahan.
Devdatta Tengshe

Jawaban:


6

Menurut Paul Ramsey :

Pertama, untuk peningkatan versi tambalan (misalnya XYZ -> XY (Z +1)) di PostgreSQL dan PostGIS Anda tidak perlu melakukan apa pun selain menginstal perangkat lunak baru. Data dapat tetap di tempatnya dan semuanya akan berfungsi.

Untuk peningkatan versi minor di PostgreSQL (mis. XYZ -> X. (Y + 1) .Z) Anda perlu membuang dan memulihkan. Untuk peningkatan versi minor di PostGIS, Anda perlu melakukan "peningkatan lunak", yang berarti membiarkan data tetap di tempatnya, tetapi menjalankan skrip peningkatan (mis. Postgis_upgrade_14_to_15.sql) setelah Anda menginstal pembaruan perangkat lunak.

Akhirnya, untuk peningkatan versi utama dalam PostgreSQL dan PostGIS (mis. XYZ -> (X + 1) .YZ), Anda perlu membuang dan memulihkan.

Apakah Anda menyimpan data dalam skema publik?

Yang membawa saya ke poin aktual yang ingin saya sampaikan: Anda dapat memastikan kemudahan terbesar dalam melakukan dump dan mengembalikan data PostGIS jika Anda memastikan bahwa Anda tidak menyimpan data dalam skema "publik".

Tidak semua hilang meskipun jika Anda menyimpan data dalam skema publik

"Tapi Paul," katamu, "Aku sudah memiliki database lengkap, apakah itu berarti aku SOL?" Tidak, tetapi Anda akan membutuhkan perut yang kuat. Pertama, atur PostgreSQL baru Anda. Buat database kosong, muat PostGIS ke dalamnya. Sekarang, muat file cadangan Anda ke dalam basis data itu. Anda akan melihat banyak kesalahan. Namun, kesalahan ini akan disebabkan oleh fungsi PostGIS lama dan ketik definisi dari file dump Anda yang bertentangan dengan definisi tipe yang ada di database Anda. Dan karena Anda menginginkan definisi baru, bukan yang lama, tidak apa-apa. Beban Anda, terlepas dari semua kebisingan dan kesalahan, seharusnya benar-benar berfungsi. Setelah selesai, Anda dapat memindahkan data ke skema terpisah yang bagus, sehingga lain kali Anda dapat melakukan pemulihan yang bersih dan bebas kesalahan.

Sudahkah Anda menguji apakah itu berfungsi meskipun ada kesalahan?

Situs PostGIS juga memiliki bagian tentang peningkatan PostGIS .


Jadi pada dasarnya skema publik adalah untuk tabel temp?
Nickves

3
Nggak. Hanya saja publik "adalah tempat fungsi PostGIS dan tabel sistem diinstal, jadi jika Anda membuang skema itu, Anda mendapatkan semua definisi itu di dump Anda." Yang tidak apa-apa jika Anda pindah ke database PostGIS lain dengan versi yang sama seperti aslinya tetapi mungkin menjadi masalah ketika database definisi adalah versi yang berbeda. Versi baru mungkin memiliki definisi fungsi yang berbeda yang dapat bertentangan dengan yang ada di skema publik.
RK

2

Periksa tabel biasa dan "tabel dengan geometri", lalu gunakan (pada terminal shell / UNIX)

  • pg_dumpuntuk mengekspor tabel yang biasa (impor dengan psql)
  • pgsql2shpuntuk mengekspor tabel geo, dan shp2pgsqluntuk mengimpor.

Yang terakhir (pgsql2shp) adalah untuk "bug" dari pg_dump ketika mengekspor versi "lama ke data PostGIS baru". Tentu saja, jika tidak ada bug, Anda hanya perlu pg_dump.

Periksa dulu rekomendasi @RK, psql -f postgis_upgrade_1X_to_15.sql -d your_spatial_database... Secara umum (bot tidak selalu) ok ... pgsql2shp adalah opsi TERAKHIR.


1

Saya setuju dengan jawaban lain dan telah menggunakan metode pg_dump. Satu keuntungan tambahan adalah bahwa Anda dapat mengompres dump ke zip atau tar misalnya dan memindahkannya ke server lain jika perlu.


pg_dump mengekspor data PostGIS dengan beberapa "bug" ... pgsql2shp mengekspor geometri dengan lebih baik, ketika mengekspor versi postGIS lama ke versi baru.
Peter Krauss
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.