From: | Mariano Reingart <reingart(at)gmail(dot)com> |
---|---|
To: | Guillermo Villanueva <guillermovil(at)gmail(dot)com> |
Cc: | pgsql-es-ayuda <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: COPY FROM |
Date: | 2010-09-27 17:24:36 |
Message-ID: | AANLkTinntaduCQWqXT8BDnr02Gs6sERg_Kzv3fPenPiy@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
2010/9/27 Guillermo Villanueva <guillermovil(at)gmail(dot)com>:
> Hola gente como están?
> Nuevamente estoy renegando con COPY FROM
> Resulta que tengo un archivo detexto separado por tab utf8 sin BOM muy
> grande que al utilizarlo para ingresar datos en mi db a través de COPY FROM
> funciona correctamente y se ingresan todos los datos. (mas de 600mil líneas)
> Todo esto en un postgres 8.4 sobre windows 2000 server y sobre una base de
> datos con ENCODING = 'LATIN1'
> Si al mismísimo archivo, lo copio a un servidor postgres 8.4 sobre ubuntu
> server y sobre una base de datos tambien con ENCODING = 'LATIN1' me provoca
> el siguiente error:
> postgres(at)servernacer:/var/ftp/nacer/postgresql$ psql nacer
> psql (8.4.4)
> Type "help" for help.
> nacer=# copy nacer.historicotemp from
> '/var/ftp/nacer/postgresql/B10201008.UEC.TXT' null as ''
> nacer-# ;
> ERROR: value too long for type character varying(2)
> CONTEXT: COPY historicotemp, line 6503, column afidompiso: "3º"
> nacer=#
> La columna afidompiso está definida como varchar(2) y el dato que muestra es
> también de 2 . Si reviso el archivo en la línea 6503 tengo 2 caracteres y un
> tab. Aclaro, el copy from funcionó bien en el servidor windows.
Hiciste un
SET CLIENT_ENCODING = 'LATIN1';
Revisaste el encoding de la terminal de linux?
Probaste desde pgadmin3?
En psql, con \l que codificación te aparece?
Debe ser algún tema relacionado al juego de caracteres, a veces en
linux conviene convertir a utf8:
reingart=# \l
Listado de base de datos
Nombre | Dueño | Codificación
-----------+----------+--------------
reingart | reingart | LATIN1
reingart=# SET CLIENT_ENCODING = 'LATIN1';
SET
reingart=# create table a (a char(1));
CREATE TABLE
reingart=# insert into a values ('º');
ERROR: el valor es demasiado largo para el tipo character(1)
reingart=# SET CLIENT_ENCODING = 'UTF8';
SET
reingart=# insert into a values ('º');
INSERT 0 1
El con linux podés convertir el dump de una codificación a otra con iconv:
iconv -f LATIN1 -t UTF8 < entrada.sql > salida.sql
Eso me ha ayudado en ciertas ocasiones,
Sds
Mariano Reingart
http://www.arpug.com.ar
http://www.sistemasagiles.com.ar
http://reingart.blogspot.com
From | Date | Subject | |
---|---|---|---|
Next Message | Alvaro Herrera | 2010-09-27 17:38:37 | Re: fatal out of shared memory postgres |
Previous Message | Jaime Casanova | 2010-09-27 17:23:34 | Re: Cargar datos como fecha |