[Gfoss] Problemi con shp2pgsql

Salve a tutti,
sto cercando di importare in postgis alcuni shp di teleatlas.
Per comodità pensavo di usare shp2pgsql da riga di comando ma non riesco ad importarli per problemi, pare, di “client encoding” (il db è utf 8).
Per curiosità ho provato ad usare il plugin SPIT di qgis e tutto fila liscio, almeno per una tabella (se non sbaglio il plugin non permette di “appendere” nuovi record, o almeno a me non mi riesce!).
La soluzione che ho trovato è quella di fare prima una merge dei dati e poi importarli con SPIT, ma vorrei capire qual’è il problema e, sopratutto, la procedura corretta; ad esempio, per usare shp2pgsql che codifica devo usare per il db?
E’ davvero un problema di codifica?

Grazie per i consigli


-beppe-

Grazie mille, provo e ... speriamo bene!

-beppe-

Il giorno ven, 12/03/2010 alle 12.13 +0100, a.furieri@lqt.it ha scritto:

On Fri, 12 Mar 2010 11:57:50 +0100, Giuseppe Naponiello wrote
> Salve a tutti,
> sto cercando di importare in postgis alcuni shp di teleatlas.
> Per comodità pensavo di usare shp2pgsql da riga di comando ma non
riesco ad importarli per problemi, pare, di "client encoding" (il db è
utf 8).
> Per curiosità ho provato ad usare il plugin SPIT di qgis e tutto
fila liscio, almeno per una tabella (se non sbaglio il plugin non
permette di "appendere" nuovi record, o almeno a me non mi riesce!).
> La soluzione che ho trovato è quella di fare prima una merge dei
dati e poi importarli con SPIT, ma vorrei capire qual'è il problema e,
sopratutto, la procedura corretta; ad esempio, per usare shp2pgsql che
codifica devo usare per il db?
> E' davvero un problema di codifica?
>

Si, è davvero un problema di codifica.

Uno Shapefile ha sempre un .DBF associato che contiene gli
attributi informativi: è molto facile che i tuoi SHP contengano
toponimi con lettere accentate (p.es. Viggiù, Paternò ...).

Se i tuoi SHP sono stati generati su Windows (molto probabile)
allora quasi certamente usano il charset encoding CP1252
[Windows Latin-1], che è completamente differente da UTF-8.

E quindi (giustamente) PostgreSQL 'sputa via' schifato i tuoi
dati, perchè non riesce ad interpretarli correttamente.

Ma la soluzione è abbastanza semplice: basta che tu usi
il comando 'iconv' per convertire il charset encoding.

p.es. se il file generato da shp2pgsql si chiama 'pippo.sql':

iconv -f CP1252 -t UTF-8 pippo.sql >pippo2.sql

... e poi ovviamente devi importare pippo2.sql

ciao Sandro