Hola Jorge, te paso el código que utilicé (respaldo.sql es el dump en formato plano de la BD):
import codecs def encode_invalid_chars(input_file, output_file): with codecs.open(input_file, 'r', encoding='utf-8', errors='replace') as file_in: with codecs.open(output_file, 'w', encoding='utf-8') as file_out: for line in file_in: encoded_line = line.encode('utf-8', errors='replace').decode('utf-8') file_out.write(encoded_line) input_file = 'respaldo.sql' output_file = 'respaldo_fixed.sql' encode_invalid_chars(input_file, output_file) Luego ejecutar el código con: python utf8detect.py El sáb, 20 may 2023 a las 23:27, jorge gerardo fernandez lugo (< jorge...@hotmail.com>) escribió: > Hola Guillermo, > Muy bueno que hayas pasado de 8.0 a una nueva (11 creo por lo que ví). > > Me interesa la parte del script python. Ya que tengo un problema similar > con unos postgresql 8.4 con ASCII cómo codificación, que al pasarlos a UTF8 > se rompe con los caracteres que no puede manejar. > > Apreciaré mucho si podés compartir el código. > > Saludos, > Jorge Fernández > > Obtener Outlook para Android <https://aka.ms/AAb9ysg> > > ------------------------------ > *De:* Guillermo E. Villanueva <guillermo...@gmail.com> > *Enviado:* jueves, 18 de mayo de 2023 09:33 > *Para:* pgsql-es-ayuda <pgsql-es-ay...@postgresql.org> > *Asunto:* Re: de versión 8 a versión actual > > Pude realizar la migración desde 8.0 > Por si sirve la información a otros, les comento algunas cosas: > > Las complicaciones se dieron por varios factores: > > - Versión muy antigua de postgres > - Codificación de datos de origen ascii con algunos caracteres no > codificables en utf8 > - Utilización de campos large objects en el origen > > > > Para la migración se utilizaron los siguientes recursos > > - Pg_dump (versión postgres destino) formato custom para tabla > pg_largeobject (blobs) > - Pg_dump (versión postgres destino) formato plano para datos de > esquema public > - Programación en Python para detección y reemplazo de caracteres no > codificables en utf8, actúa sobre el archivo salida del punto anterior. > - Funciones plpgsql para el traspaso de large object a bytea > > > Saludos > > El vie, 5 may 2023 a las 11:29, Guillermo E. Villanueva (< > guillermo...@gmail.com>) escribió: > >> Buen día, en un sistema viejo, tengo una base de datos postgresql 8.0 la >> cual tiene tablas con columnas de tipo lo (large objects). >> Tengo que migrarlo a una versión mas actual de postgres y a las columnas >> de tipo lo las convertiré en bytea. >> Normalmente, para la migración de datos, usaba una herramienta que se >> llama ESF Migration, esta me permitió pasar datos hasta desde informix con >> columnas blob sin problemas, pero en este caso, no me está trayendo los >> datos correctamente, trae el id del objeto en vez de traer los datos >> completos. >> >> ¿Alguna sugerencia? pg_upgrade convierte large object en bytea? que otra >> opción? también intenté con pg_dump -Fc -b y luego pg_restore, pero me da >> error diciendo que no existe el tipo lo al querer restaurar. >> >> Desde ya muchas gracias >> >> Guillermo >> > >