On Sat, Dec 1, 2018 at 12:06 AM Micky Khan <mcanc...@hotmail.com> wrote:
> La orden era: INSERT INTO public.mcolores_cabecera VALUES ('T', NULL, 9, 5, 
> '00601', '0114', 'T59400601114', 'DISP+2  º LAV...
> pg_restore: [archiver (bd)] could not execute query: ERROR:  el valor es 
> demasiado largo para el tipo character varying(35)
...
> mi bd esta con Latin1.

Tiene toda la pinta de que el backup va en utf-8, con lo que las Ñ y
similares salen en dos bytes, pero lo restauras en latin-1. Como
cualquier secuencia de bytes es latin-1 valido, pero mas largo, te
pasa eso.

pg_restore parece que coge el encoding de la BD, pero si el backup lo
has hecho con pg_dump tiene un switch para cambiarlo ( esta en la doc,
-E ).

Ademas, si tu volcado es sql, puedes usar psql en lugar de pg_restore,
que esta documentado que usa PGCLIENTENCODING.

Por otro lado, si no usas pg_dump ( no dices como importas los datos,
si es de otro pg o de donde los sacas ), deberias mirar de generar el
sql fuente en latin-1, o de pasar el sql por un recode o similar que
te lo convierta.

Y si con esto no te vale, prueba a dar algun detalle mas de como
generas / restauras los archivos, que BD son la fuente / original yque
encodings usas en cada uno, en que sistema(s) operativo(s) estas
trabajando con los archivos, tu solucion puede ir de poner un switch a
algo mucho mas complicado.


Francisco Olarte.

Reply via email to