Guillermo, intenta seguir los siguientes pasos http://www.postgresql.org/message-id/6.1.2.0.2.20041108105839.02fdc...@pop.suscom-maine.net(Ingles)
El 19 de abril de 2013 17:50, Guillermo E. Villanueva < guillermo...@gmail.com> escribió: > Muchas gracias Alvaro, que despiole!!!! > voy a tener que hacer algo así. > Saludos > > Guillermo Villanueva > > > > El 19 de abril de 2013 16:16, Alvaro Herrera > <alvhe...@2ndquadrant.com>escribió: > > Guillermo E. Villanueva escribió: >> > Amigos, heredé una base de datos que está codificada en LATIN1 >> > Intenté hacer backup de algunas tablas para llevarlas de un server a >> otro. >> > En ambos casos está en LATIN1 >> > Al backup lo hice generando INSERTs >> > El mismo backup ya me genera el archivo con seteos preliminares como : >> > SET client_encoding = 'LATIN1'; >> > Y la sorpresa viene cuando ejecuto los inserts (lo hago desde pgAdmin) >> > guarda mal los caracteres especiales como ñ á é etc >> > en cambio si modifico el seteo pasándolo a : >> > SET client_encoding = 'UTF8'; >> > Todo se guarda ok >> > >> > Porqueeee si la base está en LATIN1 y el cliente estaba en LATIN1, no se >> > suponía que debía guardar bien así? >> > Desde ya les agradezco si me pueden aclarar un poquito el panorama >> >> Seguramente lo que sucede es que los datos realmente no están en Latin1 >> porque las aplicaciones han estado hablando en UTF8 todo el tiempo. Si >> hubieras declarado client_encoding=utf8 el sistema habría hecho >> conversión de los bytes que llegaban de la aplicación y los habría >> ingresado en Latin1. Pero no lo hiciste; y Latin1 no tiene mecanismo de >> auto-verificación, de manera que los bytes que recibe son los que >> inserta, sin posibilidad de verificar que "tienen sentido". >> >> UTF8 es distinto no sólo porque los caracteres se representan diferente, >> sino también tiene más redundancia en la representación de los >> caracteres, de manera que si tratas de insertar datos que en realidad >> están en Latin1 (por ejemplo), puede darse cuenta que a la secuencia le >> faltan bytes y rechaza la cadena como no válida. >> >> >> Tu solución es tratar de importar los datos en UTF8 y verificar que todo >> está correcto. Si hay algo que falla la inserción, considera esos datos >> restantes como si estuvieran en Latin1 (client_encoding=latin1). Luego >> de eso deberías tener todos los datos con la codificación correcta. >> A mí me tocó enfrentar este mismo problema, donde había una mezcla de >> UTF8 válido (99% de los datos) y Latin1. Lo que hice fue pasar todo por >> pgloader en dos pasadas; la primera asumía encoding utf8. El 1% fue >> rechazado y agregado a un archivo de fallas; la segunda pasada importaba >> el archivo de fallas considerando latin1. >> >> -- >> Álvaro Herrera http://www.2ndQuadrant.com/ >> PostgreSQL Development, 24x7 Support, Training & Services >> > > -- -- Correo no firmado o cifrado