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.