Re: COPY FROM

From: Horacio Miranda <hmiranda(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-28 00:42:27
Message-ID: AANLkTi=3F8ULNmDM0Q2FEfLq01bwH1Bbag5tHZWE11fJ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

2010/9/28 Guillermo Villanueva <guillermovil(at)gmail(dot)com>:
> No Horacio, al archivo de texto separado por tabuladores (UTF8 sin BOM) lo
> obtengo con una pequeña aplicación desde un SQL Server 2000.
> Saludos
>

Solo una consulta, si este proceso es un proceso normal, no sería
mejor tener un ODBC desde postgresql a ese SQL server y hacer el
import con un dblink ? (desde ambas bases se tiene el mismo encoder
verdad ? ).

> ~~~~~~~~~~~~~~~~
> Guillermo Villanueva
>
>
> El 27 de septiembre de 2010 18:21, Horacio Miranda <hmiranda(at)gmail(dot)com>
> escribió:
>>
>> Solo una pregunta, es mi idea o estas haciendo un backup y respaldo a
>> mano ? (datos de forma selectiva?).
>>
>> 2010/9/28 Guillermo Villanueva <guillermovil(at)gmail(dot)com>:
>> > Mariano, muchísimas gracias por tu respuesta.
>> > Primero que nada te cuento que al ejecutar el COPY FROM desde pgadmin3
>> > funcionó correctamente!! no lo había hecho así por que la verdad que no
>> > tenía idea de donde iba a intentar tomar el archivo especificado.
>> > Muy bunas las pruebas que hiciste con el simbolito º , la verdad que
>> > estoy
>> > medio perdido con esto de las codificaciones , yo pondría todo en UTF8,
>> > pero
>> > el sistema que intento implementar tiene como requisito que la base esté
>> > en
>> > LATIN1 (maldita restricción).
>> > De nuevo gracias.
>> > Ah te mando el \l de mi server linux
>> > nacer=# \l
>> >                                   List of databases
>> >    Name    |  Owner   | Encoding |  Collation  |    Ctype    |   Access
>> > privileges
>> >
>> > -----------+----------+----------+-------------+-------------+-----------------------
>> >  nacer     | projekt  | LATIN1   | C           | C           |
>> >  postgres  | postgres | UTF8     | es_AR.UTF-8 | es_AR.UTF-8 |
>> >  template0 | postgres | UTF8     | es_AR.UTF-8 | es_AR.UTF-8 |
>> > =c/postgres
>> >                                                              :
>> > postgres=CTc/postgres
>> >  template1 | postgres | UTF8     | es_AR.UTF-8 | es_AR.UTF-8 |
>> > =c/postgres
>> >                                                              :
>> > postgres=CTc/postgres
>> >
>> > Saludos
>> >
>> > ~~~~~~~~~~~~~~~~
>> > Guillermo Villanueva
>> >
>> >
>> > El 27 de septiembre de 2010 14:24, Mariano Reingart <reingart(at)gmail(dot)com>
>> > escribió:
>> >>
>> >> 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
>> >

--
Saludos,
Horacio Miranda Aguilera.

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Guillermo Villanueva 2010-09-28 00:54:47 Re: COPY FROM
Previous Message Horacio Miranda 2010-09-28 00:27:09 Re: restore