[caracas-pm] ora2pg y problemas con caracteres especiales.

Ernesto Hernández-Novich emhn at movistar.net.ve
Mon Apr 16 07:32:19 PDT 2007


On Mon, 2007-04-16 at 10:10 -0400, Ivan Martinez wrote:
> Estoy tratando de migrar una base de datos que actualmente corre en 
> oracle 9 (windows) a Postgres 8.1 (Debian).
> 
> La herramienta ora2pg me ha dado muy buenos resultados exportando las 
> tablas, pero cuando intento  exportar los registros caracteres como las 
> ñ los convierte en ? y los acentos no los muestran.

¿Cuál juego de caracteres está usando Oracle? ¿Los caracteres acentuados
se ven bien desde SQLPLUS en _Linux_? Lo más probable es que sea
WE8ISO88591P1 pero como estás en Windows capaz es una cochinada 1252 o
peor. Verifica tus variables de ambiente en Linux (eso es un problema de
Oracle, descrito en la documentación de Oracle) ¿Cuál juego de
caracteres pretendes utilizar en la base de datos Pg? (Te recomiendo
utilizar UTF-8).

ora2pg está escrito en Perl, por tanto vas a tener conversión
_automática_ del juego de caracteres siempre y cuando establezcas con
claridad el juego de caracteres de origen y de resultado.

Los datos de Oracle se _asumen_ en el juego de caracteres que indiques
al conectarte. El módulo DBD::Oracle es el responsable de la conexión,
de modo que debes tener las variables de ambiente con valores adecuados,
y en su defecto en la definición del DSN debes colocar el juego de
caracteres apropiado.

Perl convertirá lo recibido de Oracle a su representación interna y
luego, al enviarlo a PostgreSQL, lo enviará como UTF-8. Si la base de
datos PostgreSQL _no_ está en UTF-8 entonces tendrás que hacer la
conversión manualmente utilizando el módulo Encode.

Lee el manual de DBD::Oracle para ver los detalles.

> También me gustaría aprovechar la ocasión para preguntar que tan 
> efectivo es ora2pg migrando los triggres...

Sólo traerá el código fuente. Tendrás que traducirlos a PL/pgSQL.
-- 
Ernesto Hernández-Novich - Linux 2.6.18 i686 - Unix: Live free or die!
Geek by nature, Linux by choice, Debian of course.
If you can't aptitude it, it isn't useful or doesn't exist.
GPG Key Fingerprint = 438C 49A2 A8C7 E7D7 1500 C507 96D6 A3D6 2F4C 85E3



More information about the caracas-pm mailing list