Re: Importar fichero CSV

Lists: pgsql-es-ayuda
From: Javier Estévez CIFA Córdoba <javier(dot)estevez(dot)ext(at)juntadeandalucia(dot)es>
To: <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Importar fichero CSV
Date: 2007-03-30 11:21:48
Message-ID: 006401c772bd$9baf2280$6d64460a@cfco04.cap.juntaandalucia.es
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Hola, necesito importar un fichero de texto en .DAT que realmente es un CSV e incorporarlos en mi BD postgresql, concretamente a 2 tablas. Unos registros irían a una tabla y otros a otra.

El problema es que tengo algunas FILAS en el archivo que tienen más "columnas" que otras. Concretamente las esas son las filas que corresponden a una y otra tabla.

He intentado hacerlo así en un principio:

COPY table FROM 'ruta de mi archivo.dat'

Pero da el siguiente ERROR:

"extra data after las expected column"

Sería posible hacer una función que me importe este archivo, me reconozca las filas de uno u otro tipo y me las introduzca en una u otra tabla?


From: "Javier Carlos" <javier(at)nediam(dot)com(dot)mx>
To: Javier Estévez CIFA Córdoba <javier(dot)estevez(dot)ext(at)juntadeandalucia(dot)es>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Importar fichero CSV
Date: 2007-03-30 12:08:49
Message-ID: 21343.201.139.132.199.1175256529.squirrel@mail.nediam.com.mx
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Si ya lo tienes en CSV, lo que a mí se me ocurre es que abras el
archivo en Excel (o Calc si usas OpenOffice), y pases las columnas
extras a otra hoja y la guardes como CSV. Pasas esos dos archivos CSV a
tu servidor, luego en psql haces dos COPY FROM y listo :)

Saludos,

Javier

> Hola, necesito importar un fichero de texto en .DAT que realmente es
> un CSV e incorporarlos en mi BD postgresql, concretamente a 2 tablas.
> Unos registros irían a una tabla y otros a otra.
>
> El problema es que tengo algunas FILAS en el archivo que tienen más
> "columnas" que otras. Concretamente las esas son las filas que
> corresponden a una y otra tabla.
>
> He intentado hacerlo así en un principio:
>
> COPY table FROM 'ruta de mi archivo.dat'
>
> Pero da el siguiente ERROR:
>
> "extra data after las expected column"
>
> Sería posible hacer una función que me importe este archivo, me
> reconozca las filas de uno u otro tipo y me las introduzca en una u
> otra tabla?


From: Javier Estévez CIFA Córdoba <javier(dot)estevez(dot)ext(at)juntadeandalucia(dot)es>
To: "Javier Carlos" <javier(at)nediam(dot)com(dot)mx>
Cc: <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Importar fichero CSV
Date: 2007-03-30 12:11:23
Message-ID: 006c01c772c4$88a48bb0$6d64460a@cfco04.cap.juntaandalucia.es
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Me gustaría automatizarlo y no tener que abrirlo con Excel pero bueno...
gracias por la sugerencia.

En cualquier caso sigo teniendo problemas al importar el archivo CSV
(aunque TODAS las filas tengan el mismo número de registros). Ahora me da un
error:

Missing data for column 7

Y realmente el valor es correcto y el tipo de campo también...

???

----- Original Message -----
From: "Javier Carlos" <javier(at)nediam(dot)com(dot)mx>
To: "Javier Estévez CIFA Córdoba" <javier(dot)estevez(dot)ext(at)juntadeandalucia(dot)es>
Cc: <pgsql-es-ayuda(at)postgresql(dot)org>
Sent: Friday, March 30, 2007 2:08 PM
Subject: Re: [pgsql-es-ayuda] Importar fichero CSV

Si ya lo tienes en CSV, lo que a mí se me ocurre es que abras el
archivo en Excel (o Calc si usas OpenOffice), y pases las columnas
extras a otra hoja y la guardes como CSV. Pasas esos dos archivos CSV a
tu servidor, luego en psql haces dos COPY FROM y listo :)

Saludos,

Javier

> Hola, necesito importar un fichero de texto en .DAT que realmente es
> un CSV e incorporarlos en mi BD postgresql, concretamente a 2 tablas.
> Unos registros irían a una tabla y otros a otra.
>
> El problema es que tengo algunas FILAS en el archivo que tienen más
> "columnas" que otras. Concretamente las esas son las filas que
> corresponden a una y otra tabla.
>
> He intentado hacerlo así en un principio:
>
> COPY table FROM 'ruta de mi archivo.dat'
>
> Pero da el siguiente ERROR:
>
> "extra data after las expected column"
>
> Sería posible hacer una función que me importe este archivo, me
> reconozca las filas de uno u otro tipo y me las introduzca en una u
> otra tabla?


From: Javier Estévez CIFA Córdoba <javier(dot)estevez(dot)ext(at)juntadeandalucia(dot)es>
To: Javier Estévez CIFA Córdoba <javier(dot)estevez(dot)ext(at)juntadeandalucia(dot)es>, "Javier Carlos" <javier(at)nediam(dot)com(dot)mx>
Cc: <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Importar fichero CSV
Date: 2007-03-30 12:24:13
Message-ID: 007901c772c6$53672c30$6d64460a@cfco04.cap.juntaandalucia.es
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Perdón era un problema de número de campos y tipo de campo.

Está OK. Pero claro, sigo necesitando NO pasar por Excel y dividir mi
archivo en dos...

Creo que debe haber alguna manera de hacerlo... sigo dándole vueltas...

----- Original Message -----
From: "Javier Estévez CIFA Córdoba" <javier(dot)estevez(dot)ext(at)juntadeandalucia(dot)es>
To: "Javier Carlos" <javier(at)nediam(dot)com(dot)mx>
Cc: <pgsql-es-ayuda(at)postgresql(dot)org>
Sent: Friday, March 30, 2007 2:11 PM
Subject: Re: [pgsql-es-ayuda] Importar fichero CSV

Me gustaría automatizarlo y no tener que abrirlo con Excel pero bueno...
gracias por la sugerencia.

En cualquier caso sigo teniendo problemas al importar el archivo CSV
(aunque TODAS las filas tengan el mismo número de registros). Ahora me da un
error:

Missing data for column 7

Y realmente el valor es correcto y el tipo de campo también...

???

----- Original Message -----
From: "Javier Carlos" <javier(at)nediam(dot)com(dot)mx>
To: "Javier Estévez CIFA Córdoba" <javier(dot)estevez(dot)ext(at)juntadeandalucia(dot)es>
Cc: <pgsql-es-ayuda(at)postgresql(dot)org>
Sent: Friday, March 30, 2007 2:08 PM
Subject: Re: [pgsql-es-ayuda] Importar fichero CSV

Si ya lo tienes en CSV, lo que a mí se me ocurre es que abras el
archivo en Excel (o Calc si usas OpenOffice), y pases las columnas
extras a otra hoja y la guardes como CSV. Pasas esos dos archivos CSV a
tu servidor, luego en psql haces dos COPY FROM y listo :)

Saludos,

Javier

> Hola, necesito importar un fichero de texto en .DAT que realmente es
> un CSV e incorporarlos en mi BD postgresql, concretamente a 2 tablas.
> Unos registros irían a una tabla y otros a otra.
>
> El problema es que tengo algunas FILAS en el archivo que tienen más
> "columnas" que otras. Concretamente las esas son las filas que
> corresponden a una y otra tabla.
>
> He intentado hacerlo así en un principio:
>
> COPY table FROM 'ruta de mi archivo.dat'
>
> Pero da el siguiente ERROR:
>
> "extra data after las expected column"
>
> Sería posible hacer una función que me importe este archivo, me
> reconozca las filas de uno u otro tipo y me las introduzca en una u
> otra tabla?

---------------------------(fin del mensaje)---------------------------
TIP 6: ¿Has buscado en los archivos de nuestra lista de correo?

http://archives.postgresql.org/pgsql-es-ayuda


From: "Mario Gonzalez" <gonzalemario(at)gmail(dot)com>
To: Javier Estévez CIFA Córdoba <javier(dot)estevez(dot)ext(at)juntadeandalucia(dot)es>
Cc: "Javier Carlos" <javier(at)nediam(dot)com(dot)mx>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Importar fichero CSV
Date: 2007-03-30 12:43:26
Message-ID: 2065a6cf0703300543i61f8f6d0jabb6beaffdca7555@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

On 30/03/07, Javier Estévez CIFA Córdoba
<javier(dot)estevez(dot)ext(at)juntadeandalucia(dot)es> wrote:
> Perdón era un problema de número de campos y tipo de campo.
>

pues claro.

> Está OK. Pero claro, sigo necesitando NO pasar por Excel y dividir mi
> archivo en dos...
>
> Creo que debe haber alguna manera de hacerlo... sigo dándole vueltas...
>

Con solo haber leido la ayuda en psql no habrias tenido que preguntar

test=> \h COPY
Comando: COPY
Descripción: copia datos entre un archivo y una tabla
Sintaxis:
COPY nombre_tabla [ ( columna [, ...] ) ]
FROM { 'archivo' | STDIN }
[...]

>

--
http://www.advogato.org/person/mgonzalez/


From: "Guido Barosio" <gbarosio(at)gmail(dot)com>
To: "Mario Gonzalez" <gonzalemario(at)gmail(dot)com>
Cc: Javier Estévez CIFA Córdoba <javier(dot)estevez(dot)ext(at)juntadeandalucia(dot)es>, "Javier Carlos" <javier(at)nediam(dot)com(dot)mx>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Importar fichero CSV
Date: 2007-03-30 12:50:40
Message-ID: f7f6b4c70703300550idf218bco2d22d7bf219af6f6@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Mario,

El problema lo tiene igual, porque el asunto no pasa por como hacer
el COPY, sino por la cantidad de columnas por fila. COPY no maneja eso
dinamicamente, simplemente espera por STDIN o un archivo lineas con
una cantidad predeterminada de columnas (que justamente coincide con
la definicion de la tabla creo?).

Javier, podrias utilizar plpgsql o algun lenguaje para parsear el
.dat? Trabajar sobre el arreglo de columnas y utilizar las dos
primeras posiciones es lo primero que se me ocurre.

Saludos,
Guido.

On 3/30/07, Mario Gonzalez <gonzalemario(at)gmail(dot)com> wrote:
> On 30/03/07, Javier Estévez CIFA Córdoba
> <javier(dot)estevez(dot)ext(at)juntadeandalucia(dot)es> wrote:
> > Perdón era un problema de número de campos y tipo de campo.
> >
>
> pues claro.
>
> > Está OK. Pero claro, sigo necesitando NO pasar por Excel y dividir mi
> > archivo en dos...
> >
> > Creo que debe haber alguna manera de hacerlo... sigo dándole vueltas...
> >
>
> Con solo haber leido la ayuda en psql no habrias tenido que preguntar
>
> test=> \h COPY
> Comando: COPY
> Descripción: copia datos entre un archivo y una tabla
> Sintaxis:
> COPY nombre_tabla [ ( columna [, ...] ) ]
> FROM { 'archivo' | STDIN }
> [...]
>
> >
>
> --
> http://www.advogato.org/person/mgonzalez/
>
> ---------------------------(fin del mensaje)---------------------------
> TIP 7: no olvides aumentar la configuraci�n del "free space map"
>

--
Guido Barosio
-----------------------
http://www.globant.com
guido(dot)barosio(at)globant(dot)com


From: Raúl Mero Moreira <rmero(at)marzam-online(dot)com>
To: Javier Carlos <javier(at)nediam(dot)com(dot)mx>
Cc: Javier Estévez CIFA Córdoba <javier(dot)estevez(dot)ext(at)juntadeandalucia(dot)es>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Importar fichero CSV
Date: 2007-03-30 13:19:46
Message-ID: 460D0E72.2010906@marzam-online.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Consejos:

1 el archivo csv tiene que contener el mismo numero de columnas que la
tabla

2 vale exportarlo primero a un txt y reemplazar (por si acaso tienes
campos texto) las ';' por ',' ya el campo csv tiene como separadores de
columnas los puntos y comas

3 antes de subirlo vale como recomendacion que coloques en la unidad c
d e como tengas.

saludos,
Raul

Javier Carlos escribió:
> Si ya lo tienes en CSV, lo que a mí se me ocurre es que abras el
> archivo en Excel (o Calc si usas OpenOffice), y pases las columnas
> extras a otra hoja y la guardes como CSV. Pasas esos dos archivos CSV a
> tu servidor, luego en psql haces dos COPY FROM y listo :)
>
> Saludos,
>
> Javier
>
>
>
>
>
>> Hola, necesito importar un fichero de texto en .DAT que realmente es
>> un CSV e incorporarlos en mi BD postgresql, concretamente a 2 tablas.
>> Unos registros irían a una tabla y otros a otra.
>>
>> El problema es que tengo algunas FILAS en el archivo que tienen más
>> "columnas" que otras. Concretamente las esas son las filas que
>> corresponden a una y otra tabla.
>>
>> He intentado hacerlo así en un principio:
>>
>> COPY table FROM 'ruta de mi archivo.dat'
>>
>> Pero da el siguiente ERROR:
>>
>> "extra data after las expected column"
>>
>> Sería posible hacer una función que me importe este archivo, me
>> reconozca las filas de uno u otro tipo y me las introduzca en una u
>> otra tabla?
>>
>
>
>
> ---------------------------(fin del mensaje)---------------------------
> TIP 3: si publicas/lees desde Usenet, por favor envía "subscribe-nomail"
> a majordomo(at)postgresql(dot)org para que tus mensajes puedan llegar
> a los suscriptores de la lista
>
>

Attachment Content-Type Size
rmero.vcf text/x-vcard 488 bytes

From: "Mario Gonzalez" <gonzalemario(at)gmail(dot)com>
To: "Guido Barosio" <gbarosio(at)gmail(dot)com>
Cc: Javier Estévez CIFA Córdoba <javier(dot)estevez(dot)ext(at)juntadeandalucia(dot)es>, "Javier Carlos" <javier(at)nediam(dot)com(dot)mx>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Importar fichero CSV
Date: 2007-03-30 13:27:38
Message-ID: 2065a6cf0703300627m660ae6e9q2a9c055d3c1548e5@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

On 30/03/07, Guido Barosio <gbarosio(at)gmail(dot)com> wrote:
> Mario,
>
> El problema lo tiene igual, porque el asunto no pasa por como hacer
> el COPY, sino por la cantidad de columnas por fila. COPY no maneja eso
> dinamicamente, simplemente espera por STDIN o un archivo lineas con
> una cantidad predeterminada de columnas (que justamente coincide con
> la definicion de la tabla creo?).
>

Estructura Tabla
******************
test=> \d copy_example
Tabla «public.copy_example»
Columna | Tipo | Modificadores
---------+---------+---------------
num1 | integer |
num2 | integer |
num3 | integer |

Archivo
********
mario(at)mario:~$ more archivo_csv
1,2,3
4,5,6
7,8,9

Codigo python:
*****************

from psycopg import connect

con = connect("host=myhost user=usuario password=password dbname=test")
cursor = con.cursor()

for lineas in open("archivo_csv").readlines():
_list = lineas.split(",")
num3 = _list.pop()
num2 = _list.pop()
num1 = _list.pop()
sql = """
INSERT INTO copy_example (num2, num3)
VALUES (%s, %s)
""" % (num2, num3)
cursor.execute( sql )
con.commit()

>

--
http://www.advogato.org/person/mgonzalez/


From: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
To: Javier Carlos <javier(at)nediam(dot)com(dot)mx>
Cc: Javier Estévez CIFA Córdoba <javier(dot)estevez(dot)ext(at)juntadeandalucia(dot)es>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Importar fichero CSV
Date: 2007-03-30 13:39:05
Message-ID: 20070330133905.GD4215@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda


> > Hola, necesito importar un fichero de texto en .DAT que realmente es
> > un CSV e incorporarlos en mi BD postgresql, concretamente a 2 tablas.
> > Unos registros irían a una tabla y otros a otra.
> >
> > El problema es que tengo algunas FILAS en el archivo que tienen más
> > "columnas" que otras. Concretamente las esas son las filas que
> > corresponden a una y otra tabla.

Imposible. Divide el archivo primero en dos partes, y luego haces COPY
de cada una de las partes.

La parte mas "dificil" seria dividir el archivo, pero como no nos has
dicho que estructura tiene cada linea es dificil saberlo.

Una manera seria lo que propone Mario: un programa en Python o Perl, que
hace un "split" de cada linea a un arreglo; luego le preguntas que
tamaño tiene el arreglo resultante, y dependiendo de eso decides que
tabla le toca, y haces un INSERT en ella.

Lo que yo haria seria un programa en shell (quizas en awk? o en perl)
que divida el archivo y arroje las lineas a dos archivos separados, y
luego haria COPY de los dos archivos de salida.

--
Alvaro Herrera http://www.CommandPrompt.com/
PostgreSQL Replication, Consulting, Custom Development, 24x7 support


From: "Guido Barosio" <gbarosio(at)gmail(dot)com>
To: "Mario Gonzalez" <gonzalemario(at)gmail(dot)com>
Cc: Javier Estévez CIFA Córdoba <javier(dot)estevez(dot)ext(at)juntadeandalucia(dot)es>, "Javier Carlos" <javier(at)nediam(dot)com(dot)mx>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Importar fichero CSV
Date: 2007-03-30 13:43:42
Message-ID: f7f6b4c70703300643x18f37933q9a0877b54e560998@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Claro, algo asi :)

On 3/30/07, Mario Gonzalez <gonzalemario(at)gmail(dot)com> wrote:
> On 30/03/07, Guido Barosio <gbarosio(at)gmail(dot)com> wrote:
> > Mario,
> >
> > El problema lo tiene igual, porque el asunto no pasa por como hacer
> > el COPY, sino por la cantidad de columnas por fila. COPY no maneja eso
> > dinamicamente, simplemente espera por STDIN o un archivo lineas con
> > una cantidad predeterminada de columnas (que justamente coincide con
> > la definicion de la tabla creo?).
> >
>
> Estructura Tabla
> ******************
> test=> \d copy_example
> Tabla «public.copy_example»
> Columna | Tipo | Modificadores
> ---------+---------+---------------
> num1 | integer |
> num2 | integer |
> num3 | integer |
>
> Archivo
> ********
> mario(at)mario:~$ more archivo_csv
> 1,2,3
> 4,5,6
> 7,8,9
>
> Codigo python:
> *****************
>
> from psycopg import connect
>
> con = connect("host=myhost user=usuario password=password dbname=test")
> cursor = con.cursor()
>
> for lineas in open("archivo_csv").readlines():
> _list = lineas.split(",")
> num3 = _list.pop()
> num2 = _list.pop()
> num1 = _list.pop()
> sql = """
> INSERT INTO copy_example (num2, num3)
> VALUES (%s, %s)
> """ % (num2, num3)
> cursor.execute( sql )
> con.commit()
>
> >
>
> --
> http://www.advogato.org/person/mgonzalez/
>

--
Guido Barosio
-----------------------
http://www.globant.com
guido(dot)barosio(at)globant(dot)com


From: "Mario Gonzalez" <gonzalemario(at)gmail(dot)com>
To: "Javier Carlos" <javier(at)nediam(dot)com(dot)mx>, Javier Estévez CIFA Córdoba <javier(dot)estevez(dot)ext(at)juntadeandalucia(dot)es>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Importar fichero CSV
Date: 2007-03-30 13:49:46
Message-ID: 2065a6cf0703300649p7e03e92asbe5d3cfc33ec24bd@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

On 30/03/07, Alvaro Herrera <alvherre(at)commandprompt(dot)com> wrote:
>
> Lo que yo haria seria un programa en shell (quizas en awk? o en perl)
> que divida el archivo y arroje las lineas a dos archivos separados, y
> luego haria COPY de los dos archivos de salida.
>

Usando el mismo archivo CSV que mostre de ejemplo, algo en shell
como lo que dice Alvaro:

mario(at)mario:~$ cut -d , -f1,2 archivo_csv
1,2
4,5
7,8

mario(at)mario:~$ cut -d , -f3 archivo_csv
3
6
9

>

--
http://www.advogato.org/person/mgonzalez/


From: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
To: Mario Gonzalez <gonzalemario(at)gmail(dot)com>
Cc: Javier Carlos <javier(at)nediam(dot)com(dot)mx>, Javier Estévez CIFA Córdoba <javier(dot)estevez(dot)ext(at)juntadeandalucia(dot)es>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Importar fichero CSV
Date: 2007-03-30 14:39:31
Message-ID: 20070330143931.GJ4215@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Mario Gonzalez escribió:
> On 30/03/07, Alvaro Herrera <alvherre(at)commandprompt(dot)com> wrote:
> >
> >Lo que yo haria seria un programa en shell (quizas en awk? o en perl)
> >que divida el archivo y arroje las lineas a dos archivos separados, y
> >luego haria COPY de los dos archivos de salida.
>
> Usando el mismo archivo CSV que mostre de ejemplo, algo en shell
> como lo que dice Alvaro:
>
> mario(at)mario:~$ cut -d , -f1,2 archivo_csv
> 1,2
> 4,5
> 7,8
>
> mario(at)mario:~$ cut -d , -f3 archivo_csv
> 3
> 6
> 9

No no, entiendo que el problema es que el OP tiene un archivo que es
algo asi:

1,2,3
4,5,6
7,8,9,10,11
2,3,4
3,4,5
3,4,5,6,7

Entonces el asunto es que hay que poner las lineas 1, 2, 4 y 5 en una
tabla, y las lineas 3 y 6 en otra. El problema es saber cuales lineas
tienen 3 columas y cuales tienen 5. Puntos extra si recorres el archivo
completo solo una vez.

--
Alvaro Herrera http://www.CommandPrompt.com/
PostgreSQL Replication, Consulting, Custom Development, 24x7 support


From: "Mario Gonzalez" <gonzalemario(at)gmail(dot)com>
To: "Javier Carlos" <javier(at)nediam(dot)com(dot)mx>, Javier Estévez CIFA Córdoba <javier(dot)estevez(dot)ext(at)juntadeandalucia(dot)es>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Importar fichero CSV
Date: 2007-03-30 14:43:39
Message-ID: 2065a6cf0703300743y5a0cc1dfue1f742e2342104b8@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

On 30/03/07, Alvaro Herrera <alvherre(at)commandprompt(dot)com> wrote:
>
> No no, entiendo que el problema es que el OP tiene un archivo que es
> algo asi:
>
> 1,2,3
> 4,5,6
> 7,8,9,10,11
> 2,3,4
> 3,4,5
> 3,4,5,6,7
>

Ahh, no entendi esa parte.

> Entonces el asunto es que hay que poner las lineas 1, 2, 4 y 5 en una
> tabla, y las lineas 3 y 6 en otra. El problema es saber cuales lineas
> tienen 3 columas y cuales tienen 5. Puntos extra si recorres el archivo
> completo solo una vez.
>

bueno, el codigo python que envie lo hace asi que gane mis puntos
extra :-) Solo habria que modificar que el programa detecte los
largos de cada linea y crear una lista con cada uno de ellos. Eso se
resumen en unas cuantas lineas mas.

>

--
http://www.advogato.org/person/mgonzalez/


From: "Edwin Quijada" <listas_quijada(at)hotmail(dot)com>
To: javier(dot)estevez(dot)ext(at)juntadeandalucia(dot)es
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Importar fichero CSV
Date: 2007-03-30 20:14:39
Message-ID: BAY102-F349B853A833239E7B38727E3630@phx.gbl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda


> http://archives.postgresql.org/pgsql-es-ayuda
Haz un script en perl.

_________________________________________________________________
¿Cuánto vale tu auto? Tips para mantener tu carro. ¡De todo en MSN Latino
Autos! http://latino.msn.com/autos/


From: "Miguel Juan" <mjuan(at)cibal(dot)es>
To: Javier Estévez CIFA Córdoba <javier(dot)estevez(dot)ext(at)juntadeandalucia(dot)es>, <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Importar fichero CSV
Date: 2007-03-31 11:05:14
Message-ID: 00b001c77384$76d42380$3900a8c0@Despacho
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Hola Javier,

La manera más simple para importar desde un CVS es con GAWK. Desde Linux o CygWin para Windows sería algo así :

cat archivo.txt|gawk -F ';' 'NF=4 { print $0}'| psql -c "COPY tabla FROM stdin" baseDeDatos

donde NF es el numero de campos y -F es el separador.

Deberás ejecutar el comando para cada tabla que quieras rellenar indicando el número de campos en cada tabla...

Puedes hacer maravillas como cambiar el separador, el orden de los campos, etc. Y todo con una simple línea de comandos.

Saludos

Miguel Juan

----- Original Message -----
From: Javier Estévez CIFA Córdoba
To: pgsql-es-ayuda(at)postgresql(dot)org
Sent: Friday, March 30, 2007 1:21 PM
Subject: [pgsql-es-ayuda] Importar fichero CSV

Hola, necesito importar un fichero de texto en .DAT que realmente es un CSV e incorporarlos en mi BD postgresql, concretamente a 2 tablas. Unos registros irían a una tabla y otros a otra.

El problema es que tengo algunas FILAS en el archivo que tienen más "columnas" que otras. Concretamente las esas son las filas que corresponden a una y otra tabla.

He intentado hacerlo así en un principio:

COPY table FROM 'ruta de mi archivo.dat'

Pero da el siguiente ERROR:

"extra data after las expected column"

Sería posible hacer una función que me importe este archivo, me reconozca las filas de uno u otro tipo y me las introduzca en una u otra tabla?


From: Henry <hensa22(at)yahoo(dot)es>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Importar fichero CSV
Date: 2007-03-31 12:58:08
Message-ID: 94914.53996.qm@web30809.mail.mud.yahoo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

From: Javier Estévez CIFA Córdoba
To: pgsql-es-ayuda(at)postgresql(dot)org
Sent: Friday, March 30, 2007 1:21 PM
Subject: [pgsql-es-ayuda] Importar fichero CSV

Hola, necesito importar un fichero de texto en .DAT que realmente es un CSV e incorporarlos en mi BD postgresql, concretamente a 2 tablas. Unos registros irían a una tabla y otros a otra.

El problema es que tengo algunas FILAS en el archivo que tienen más "columnas" que otras. Concretamente las esas son las filas que corresponden a una y otra tabla.

He intentado hacerlo así en un principio:

COPY table FROM 'ruta de mi archivo.dat'

Pero da el siguiente ERROR:

"extra data after las expected column"

Sería posible hacer una función que me importe este archivo, me reconozca las filas de uno u otro tipo y me las introduzca en una u otra tabla?
lo que puedes hacer es crear una tabla con el maximo valor de columnas que necesites, si tu primera tabla tienes 7 campos y tu segunda tabla tienes 10 campos, entonces create un tabla de 10 campo, y ahi importa tu archivo CSV.

una vez ya importado a esta tabla puedes hacer un
insert into tabla_7_capos select ................ where campo10 is null. (para tu tabla de 7 campos)

y

insert into tabla_10_campos select ...............tabla_copy where campo10 not is null. (para tu tabla de 10 campos).

espero ayude.

Saludos.


---------------------------------

LLama Gratis a cualquier PC del Mundo.
Llamadas a fijos y móviles desde 1 céntimo por minuto.
http://es.voice.yahoo.com


From: Javier Estévez CIFA Córdoba <javier(dot)estevez(dot)ext(at)juntadeandalucia(dot)es>
To: "Alvaro Herrera" <alvherre(at)commandprompt(dot)com>, "Mario Gonzalez" <gonzalemario(at)gmail(dot)com>
Cc: "Javier Carlos" <javier(at)nediam(dot)com(dot)mx>, <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Importar fichero CSV
Date: 2007-04-02 07:08:54
Message-ID: 003401c774f5$c67a45a0$6d64460a@cfco04.cap.juntaandalucia.es
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Es fácil saberlo pues en mi archivo .DAT (estructura CSV), las líneas con
más columnas el valor de la primera columna siempre es 201 y las líneas con
el mismo número de columnas el primer valor es 222.
Mi archivo es algo así:

222,75,1230,1,2,3,4,5,6,7,8,9
222,75,1300,1,2,3,4,5,6,7,8,9
222,75,1330,1,2,3,4,5,6,7,8,9
201,75,2400,1,2,3,4,5,6,7,8,9,10,11,12
222,76,1230,1,2,3,4,5,6,7,8,9
222,76,1300,1,2,3,4,5,6,7,8,9

...

----- Original Message -----
From: "Alvaro Herrera" <alvherre(at)commandprompt(dot)com>
To: "Mario Gonzalez" <gonzalemario(at)gmail(dot)com>
Cc: "Javier Carlos" <javier(at)nediam(dot)com(dot)mx>; "Javier Estévez CIFA Córdoba"
<javier(dot)estevez(dot)ext(at)juntadeandalucia(dot)es>; <pgsql-es-ayuda(at)postgresql(dot)org>
Sent: Friday, March 30, 2007 4:39 PM
Subject: Re: [pgsql-es-ayuda] Importar fichero CSV

Mario Gonzalez escribió:
> On 30/03/07, Alvaro Herrera <alvherre(at)commandprompt(dot)com> wrote:
> >
> >Lo que yo haria seria un programa en shell (quizas en awk? o en perl)
> >que divida el archivo y arroje las lineas a dos archivos separados, y
> >luego haria COPY de los dos archivos de salida.
>
> Usando el mismo archivo CSV que mostre de ejemplo, algo en shell
> como lo que dice Alvaro:
>
> mario(at)mario:~$ cut -d , -f1,2 archivo_csv
> 1,2
> 4,5
> 7,8
>
> mario(at)mario:~$ cut -d , -f3 archivo_csv
> 3
> 6
> 9

No no, entiendo que el problema es que el OP tiene un archivo que es
algo asi:

1,2,3
4,5,6
7,8,9,10,11
2,3,4
3,4,5
3,4,5,6,7

Entonces el asunto es que hay que poner las lineas 1, 2, 4 y 5 en una
tabla, y las lineas 3 y 6 en otra. El problema es saber cuales lineas
tienen 3 columas y cuales tienen 5. Puntos extra si recorres el archivo
completo solo una vez.

--
Alvaro Herrera http://www.CommandPrompt.com/
PostgreSQL Replication, Consulting, Custom Development, 24x7 support


From: Javier Estévez CIFA Córdoba <javier(dot)estevez(dot)ext(at)juntadeandalucia(dot)es>
To: "Henry" <hensa22(at)yahoo(dot)es>, <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Importar fichero CSV
Date: 2007-04-02 12:01:03
Message-ID: 014801c7751e$96792960$6d64460a@cfco04.cap.juntaandalucia.es
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Ya lo probé y no funciona...
----- Original Message -----
From: Henry
To: pgsql-es-ayuda(at)postgresql(dot)org
Sent: Saturday, March 31, 2007 2:58 PM
Subject: Re: [pgsql-es-ayuda] Importar fichero CSV

From: Javier Estévez CIFA Córdoba
To: pgsql-es-ayuda(at)postgresql(dot)org
Sent: Friday, March 30, 2007 1:21 PM
Subject: [pgsql-es-ayuda] Importar fichero CSV

Hola, necesito importar un fichero de texto en .DAT que realmente es un CSV e incorporarlos en mi BD postgresql, concretamente a 2 tablas. Unos registros irían a una tabla y otros a otra.

El problema es que tengo algunas FILAS en el archivo que tienen más "columnas" que otras. Concretamente las esas son las filas que corresponden a una y otra tabla.

He intentado hacerlo así en un principio:

COPY table FROM 'ruta de mi archivo.dat'

Pero da el siguiente ERROR:

"extra data after las expected column"

Sería posible hacer una función que me importe este archivo, me reconozca las filas de uno u otro tipo y me las introduzca en una u otra tabla?
lo que puedes hacer es crear una tabla con el maximo valor de columnas que necesites, si tu primera tabla tienes 7 campos y tu segunda tabla tienes 10 campos, entonces create un tabla de 10 campo, y ahi importa tu archivo CSV.

una vez ya importado a esta tabla puedes hacer un
insert into tabla_7_capos select ................ where campo10 is null. (para tu tabla de 7 campos)

y

insert into tabla_10_campos select ...............tabla_copy where campo10 not is null. (para tu tabla de 10 campos).

espero ayude.

Saludos.

------------------------------------------------------------------------------

LLama Gratis a cualquier PC del Mundo.
Llamadas a fijos y móviles desde 1 céntimo por minuto.
http://es.voice.yahoo.com


From: "Mario Gonzalez" <gonzalemario(at)gmail(dot)com>
To: Javier Estévez CIFA Córdoba <javier(dot)estevez(dot)ext(at)juntadeandalucia(dot)es>
Cc: "Alvaro Herrera" <alvherre(at)commandprompt(dot)com>, "Javier Carlos" <javier(at)nediam(dot)com(dot)mx>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Importar fichero CSV
Date: 2007-04-02 13:14:30
Message-ID: 2065a6cf0704020614m33813367rf3f74c12dc0ceb6a@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

On 02/04/07, Javier Estévez CIFA Córdoba
<javier(dot)estevez(dot)ext(at)juntadeandalucia(dot)es> wrote:
> Es fácil saberlo pues en mi archivo .DAT (estructura CSV), las líneas con
> más columnas el valor de la primera columna siempre es 201 y las líneas con
> el mismo número de columnas el primer valor es 222.
> Mi archivo es algo así:
>
> 222,75,1230,1,2,3,4,5,6,7,8,9
> 222,75,1300,1,2,3,4,5,6,7,8,9
> 222,75,1330,1,2,3,4,5,6,7,8,9
> 201,75,2400,1,2,3,4,5,6,7,8,9,10,11,12
> 222,76,1230,1,2,3,4,5,6,7,8,9
> 222,76,1300,1,2,3,4,5,6,7,8,9
>

Eso des-complica mucho las cosas pero la idea es la misma. De modo
que ya tienes algunas soluciones, recuerdo:

- un programa en awk que genere dos archivos csv
- un programa en python que debe modificarse en un par de lineas
para que haga el volcado sin problemas.

Pregunta, si alguien te hace el programa, y cumple con _tus_
requerimientos y/o espectativas estarias dispuesto a hacer una
donacion a algun proyecto PostgreSQL ;-) ?

http://www.postgresql.org/about/donate

>

--
http://www.advogato.org/person/mgonzalez/


From: Henry <hensa22(at)yahoo(dot)es>
To: Javier Estévez CIFA Córdoba <javier(dot)estevez(dot)ext(at)juntadeandalucia(dot)es>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Importar fichero CSV
Date: 2007-04-02 13:14:40
Message-ID: 790348.94973.qm@web30801.mail.mud.yahoo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Javier Estévez CIFA Córdoba <javier(dot)estevez(dot)ext(at)juntadeandalucia(dot)es> escribió: Ya lo probé y no funciona...
----- Original Message -----
From: Henry
To: pgsql-es-ayuda(at)postgresql(dot)org
Sent: Saturday, March 31, 2007 2:58 PM
Subject: Re: [pgsql-es-ayuda] Importar fichero CSV

From: Javier Estévez CIFA Córdoba
To: pgsql-es-ayuda(at)postgresql(dot)org
Sent: Friday, March 30, 2007 1:21 PM
Subject: [pgsql-es-ayuda] Importar fichero CSV

Hola, necesito importar un fichero de texto en .DAT que realmente es un CSV e incorporarlos en mi BD postgresql, concretamente a 2 tablas. Unos registros irían a una tabla y otros a otra.

El problema es que tengo algunas FILAS en el archivo que tienen más "columnas" que otras. Concretamente las esas son las filas que corresponden a una y otra tabla.

He intentado hacerlo así en un principio:

COPY table FROM 'ruta de mi archivo.dat'

Pero da el siguiente ERROR:

"extra data after las expected column"

Sería posible hacer una función que me importe este archivo, me reconozca las filas de uno u otro tipo y me las introduzca en una u otra tabla?
lo que puedes hacer es crear una tabla con el maximo valor de columnas que necesites, si tu primera tabla tienes 7 campos y tu segunda tabla tienes 10 campos, entonces create un tabla de 10 campo, y ahi importa tu archivo CSV.

una vez ya importado a esta tabla puedes hacer un
insert into tabla_7_capos select ................ where campo10 is null. (para tu tabla de 7 campos)

y

insert into tabla_10_campos select ...............tabla_copy where campo10 not is null. (para tu tabla de 10 campos).

espero ayude.

Saludos.

ummm, yo hize un pequeña prueba con 3 columnas
que son estas en el archivo csv

1,1,
2,2,
3,3,
4,4,
5,5,
6,6,6
7,7,7
8,8,8
9,9,9
10,10,
11,11,11

cree una tabla de 3 columnas :
use el copy para insertarla en la tabla.

copy tabla_principal from 'E:/doc1/user/doc2/libro1.dat' with csv (tu dices que tu archivo tiene formato CSV solamente que esta con extensión DAT)

luego cree una tabla con dos columnas
he hize lo siguiente :
insert into tabla_2_col select tabla_principal.col1,tabla_principal.col2 from tabla_principal where tabla_principal.col3 is null

hay que fijarse que los tipos de datos son iguales en las dos tablas.

puedes hacer una prueba a pequeña escala, con 5 o 6 columnas y unos 25 a 40 registros, para tener un mejor control de la situación y despues que veas que todo esta Ok, ya mandarse con todo.


---------------------------------

LLama Gratis a cualquier PC del Mundo.
Llamadas a fijos y móviles desde 1 céntimo por minuto.
http://es.voice.yahoo.com


From: HERMES ZAMBRA <hermeszambra(at)yahoo(dot)com>
To: Javier Estévez CIFA Córdoba <javier(dot)estevez(dot)ext(at)juntadeandalucia(dot)es>, Alvaro Herrera <alvherre(at)commandprompt(dot)com>, Mario Gonzalez <gonzalemario(at)gmail(dot)com>
Cc: Javier Carlos <javier(at)nediam(dot)com(dot)mx>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Importar fichero CSV
Date: 2007-04-02 15:54:27
Message-ID: 112646.14593.qm@web63701.mail.re1.yahoo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda


--- Javier Estévez CIFA Córdoba
<javier(dot)estevez(dot)ext(at)juntadeandalucia(dot)es> escribió:

> Es fácil saberlo pues en mi archivo .DAT (estructura
> CSV), las líneas con
> más columnas el valor de la primera columna siempre
> es 201 y las líneas con
> el mismo número de columnas el primer valor es 222.
> Mi archivo es algo así:
>
> 222,75,1230,1,2,3,4,5,6,7,8,9
> 222,75,1300,1,2,3,4,5,6,7,8,9
> 222,75,1330,1,2,3,4,5,6,7,8,9
> 201,75,2400,1,2,3,4,5,6,7,8,9,10,11,12
> 222,76,1230,1,2,3,4,5,6,7,8,9
> 222,76,1300,1,2,3,4,5,6,7,8,9
>
>
> ...
>
> ----- Original Message -----
> From: "Alvaro Herrera" <alvherre(at)commandprompt(dot)com>
> To: "Mario Gonzalez" <gonzalemario(at)gmail(dot)com>
> Cc: "Javier Carlos" <javier(at)nediam(dot)com(dot)mx>; "Javier
> Estévez CIFA Córdoba"
> <javier(dot)estevez(dot)ext(at)juntadeandalucia(dot)es>;
> <pgsql-es-ayuda(at)postgresql(dot)org>
> Sent: Friday, March 30, 2007 4:39 PM
> Subject: Re: [pgsql-es-ayuda] Importar fichero CSV
>
>
> Mario Gonzalez escribió:
> > On 30/03/07, Alvaro Herrera
> <alvherre(at)commandprompt(dot)com> wrote:
> > >
> > >Lo que yo haria seria un programa en shell
> (quizas en awk? o en perl)
> > >que divida el archivo y arroje las lineas a dos
> archivos separados, y
> > >luego haria COPY de los dos archivos de salida.
> >
> > Usando el mismo archivo CSV que mostre de
> ejemplo, algo en shell
> > como lo que dice Alvaro:
> >
> > mario(at)mario:~$ cut -d , -f1,2 archivo_csv
> > 1,2
> > 4,5
> > 7,8
> >
> > mario(at)mario:~$ cut -d , -f3 archivo_csv
> > 3
> > 6
> > 9
>
> No no, entiendo que el problema es que el OP tiene
> un archivo que es
> algo asi:
>
> 1,2,3
> 4,5,6
> 7,8,9,10,11
> 2,3,4
> 3,4,5
> 3,4,5,6,7
>
> Entonces el asunto es que hay que poner las lineas
> 1, 2, 4 y 5 en una
> tabla, y las lineas 3 y 6 en otra. El problema es
> saber cuales lineas
> tienen 3 columas y cuales tienen 5. Puntos extra si
> recorres el archivo
> completo solo una vez.
>
> --
> Alvaro Herrera
> http://www.CommandPrompt.com/
> PostgreSQL Replication, Consulting, Custom
> Development, 24x7 support
>
>
> ---------------------------(fin del
> mensaje)---------------------------
> TIP 7: no olvides aumentar la configuración del
> "free space map"
>
Javier, decime en que sistema operativo estas.
Lo que quiero saber es si tenes un windows y
un access o un msquery por ahi ???

Se me ocurren un par de cositas sencillas
Ademas te pido me mandes el csv para poder hacer un
ejemplo

Saludos
Hermes Zambra

__________________________________________________
Correo Yahoo!
Espacio para todos tus mensajes, antivirus y antispam ¡gratis!
Regístrate ya - http://correo.espanol.yahoo.com/


From: Javier Estévez CIFA Córdoba <javier(dot)estevez(dot)ext(at)juntadeandalucia(dot)es>
To: "Mario Gonzalez" <gonzalemario(at)gmail(dot)com>
Cc: "Alvaro Herrera" <alvherre(at)commandprompt(dot)com>, "Javier Carlos" <javier(at)nediam(dot)com(dot)mx>, <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Importar fichero CSV
Date: 2007-04-03 07:23:38
Message-ID: 003c01c775c0$ffa0d710$6d64460a@cfco04.cap.juntaandalucia.es
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Claro que sí, sin problema. Yo trabajo en AgroMeteorología, y de hecho estoy
haciendo todas las funciones y desarrollos en Open Source para que la
comunidad científica pueda disponer de ellos.

Podrías concretar?

----- Original Message -----
From: "Mario Gonzalez" <gonzalemario(at)gmail(dot)com>
To: "Javier Estévez CIFA Córdoba" <javier(dot)estevez(dot)ext(at)juntadeandalucia(dot)es>
Cc: "Alvaro Herrera" <alvherre(at)commandprompt(dot)com>; "Javier Carlos"
<javier(at)nediam(dot)com(dot)mx>; <pgsql-es-ayuda(at)postgresql(dot)org>
Sent: Monday, April 02, 2007 3:14 PM
Subject: Re: [pgsql-es-ayuda] Importar fichero CSV

> On 02/04/07, Javier Estévez CIFA Córdoba
> <javier(dot)estevez(dot)ext(at)juntadeandalucia(dot)es> wrote:
> > Es fácil saberlo pues en mi archivo .DAT (estructura CSV), las líneas
con
> > más columnas el valor de la primera columna siempre es 201 y las líneas
con
> > el mismo número de columnas el primer valor es 222.
> > Mi archivo es algo así:
> >
> > 222,75,1230,1,2,3,4,5,6,7,8,9
> > 222,75,1300,1,2,3,4,5,6,7,8,9
> > 222,75,1330,1,2,3,4,5,6,7,8,9
> > 201,75,2400,1,2,3,4,5,6,7,8,9,10,11,12
> > 222,76,1230,1,2,3,4,5,6,7,8,9
> > 222,76,1300,1,2,3,4,5,6,7,8,9
> >
>
> Eso des-complica mucho las cosas pero la idea es la misma. De modo
> que ya tienes algunas soluciones, recuerdo:
>
> - un programa en awk que genere dos archivos csv
> - un programa en python que debe modificarse en un par de lineas
> para que haga el volcado sin problemas.
>
> Pregunta, si alguien te hace el programa, y cumple con _tus_
> requerimientos y/o espectativas estarias dispuesto a hacer una
> donacion a algun proyecto PostgreSQL ;-) ?
>
> http://www.postgresql.org/about/donate
>
> >
>
> --
> http://www.advogato.org/person/mgonzalez/
>


From: "Miguel Juan" <mjuan(at)cibal(dot)es>
To: <pgsql-es-ayuda(at)postgresql(dot)org>, Javier Estévez CIFA Córdoba <javier(dot)estevez(dot)ext(at)juntadeandalucia(dot)es>
Subject: Re: Importar fichero CSV
Date: 2007-04-03 08:28:44
Message-ID: 006101c775ca$18108d50$07c8a8c0@Miguel
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Hola Javier

Si quieres separar el archivo por el primer número de cada línea solo tienes
que hacer lo siguiente:

Opcion A:
genera el archivo datos222.txt para todas las líneas que empiezen con 222

grep -e ^222 datos.text >datos.txt

Opcion B:
Genera el archivo datos2.txt separando por el número de valores separados
por comas de cada línea, en este caso se considera que el número de valores
es 12 ($NF==12)

cat datos.txt| gawk -F ',' '$NF==12 {print $0}' >datos2.txt

NOTA: Necesitaras acceso a un terminal Linux/Unix o instalarte el CYGWIN en
un Windows.
http://www.cygwin.com

----- Original Message -----
From: "Javier Estévez CIFA Córdoba" <javier(dot)estevez(dot)ext(at)juntadeandalucia(dot)es>
To: "Mario Gonzalez" <gonzalemario(at)gmail(dot)com>
Cc: "Alvaro Herrera" <alvherre(at)commandprompt(dot)com>; "Javier Carlos"
<javier(at)nediam(dot)com(dot)mx>; <pgsql-es-ayuda(at)postgresql(dot)org>
Sent: Tuesday, April 03, 2007 9:23 AM
Subject: Re: [pgsql-es-ayuda] Importar fichero CSV

> Claro que sí, sin problema. Yo trabajo en AgroMeteorología, y de hecho
> estoy
> haciendo todas las funciones y desarrollos en Open Source para que la
> comunidad científica pueda disponer de ellos.
>
> Podrías concretar?
>
> ----- Original Message -----
> From: "Mario Gonzalez" <gonzalemario(at)gmail(dot)com>
> To: "Javier Estévez CIFA Córdoba" <javier(dot)estevez(dot)ext(at)juntadeandalucia(dot)es>
> Cc: "Alvaro Herrera" <alvherre(at)commandprompt(dot)com>; "Javier Carlos"
> <javier(at)nediam(dot)com(dot)mx>; <pgsql-es-ayuda(at)postgresql(dot)org>
> Sent: Monday, April 02, 2007 3:14 PM
> Subject: Re: [pgsql-es-ayuda] Importar fichero CSV
>
>
>> On 02/04/07, Javier Estévez CIFA Córdoba
>> <javier(dot)estevez(dot)ext(at)juntadeandalucia(dot)es> wrote:
>> > Es fácil saberlo pues en mi archivo .DAT (estructura CSV), las líneas
> con
>> > más columnas el valor de la primera columna siempre es 201 y las líneas
> con
>> > el mismo número de columnas el primer valor es 222.
>> > Mi archivo es algo así:
>> >
>> > 222,75,1230,1,2,3,4,5,6,7,8,9
>> > 222,75,1300,1,2,3,4,5,6,7,8,9
>> > 222,75,1330,1,2,3,4,5,6,7,8,9
>> > 201,75,2400,1,2,3,4,5,6,7,8,9,10,11,12
>> > 222,76,1230,1,2,3,4,5,6,7,8,9
>> > 222,76,1300,1,2,3,4,5,6,7,8,9
>> >
>>
>> Eso des-complica mucho las cosas pero la idea es la misma. De modo
>> que ya tienes algunas soluciones, recuerdo:
>>
>> - un programa en awk que genere dos archivos csv
>> - un programa en python que debe modificarse en un par de lineas
>> para que haga el volcado sin problemas.
>>
>> Pregunta, si alguien te hace el programa, y cumple con _tus_
>> requerimientos y/o espectativas estarias dispuesto a hacer una
>> donacion a algun proyecto PostgreSQL ;-) ?
>>
>> http://www.postgresql.org/about/donate
>>
>> >
>>
>> --
>> http://www.advogato.org/person/mgonzalez/
>>
>
>
> ---------------------------(fin del mensaje)---------------------------
> TIP 10: visita nuestro canal de IRC #postgresql-es en irc.freenode.net
>


From: Javier Estévez CIFA Córdoba <javier(dot)estevez(dot)ext(at)juntadeandalucia(dot)es>
To: "Henry" <hensa22(at)yahoo(dot)es>, <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Importar fichero CSV
Date: 2007-04-03 12:23:33
Message-ID: 00e101c775ea$e555c8f0$6d64460a@cfco04.cap.juntaandalucia.es
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

No funciona ESO.

Lo estoy haciendo en MATLAB.

Gracias a todos.
----- Original Message -----
From: Henry
To: Javier Estévez CIFA Córdoba ; pgsql-es-ayuda(at)postgresql(dot)org
Sent: Monday, April 02, 2007 3:14 PM
Subject: Re: [pgsql-es-ayuda] Importar fichero CSV

Javier Estévez CIFA Córdoba <javier(dot)estevez(dot)ext(at)juntadeandalucia(dot)es> escribió:
Ya lo probé y no funciona...
----- Original Message -----
From: Henry
To: pgsql-es-ayuda(at)postgresql(dot)org
Sent: Saturday, March 31, 2007 2:58 PM
Subject: Re: [pgsql-es-ayuda] Importar fichero CSV

From: Javier Estévez CIFA Córdoba
To: pgsql-es-ayuda(at)postgresql(dot)org
Sent: Friday, March 30, 2007 1:21 PM
Subject: [pgsql-es-ayuda] Importar fichero CSV

Hola, necesito importar un fichero de texto en .DAT que realmente es un CSV e incorporarlos en mi BD postgresql, concretamente a 2 tablas. Unos registros irían a una tabla y otros a otra.

El problema es que tengo algunas FILAS en el archivo que tienen más "columnas" que otras. Concretamente las esas son las filas que corresponden a una y otra tabla.

He intentado hacerlo así en un principio:

COPY table FROM 'ruta de mi archivo.dat'

Pero da el siguiente ERROR:

"extra data after las expected column"

Sería posible hacer una función que me importe este archivo, me reconozca las filas de uno u otro tipo y me las introduzca en una u otra tabla?
lo que puedes hacer es crear una tabla con el maximo valor de columnas que necesites, si tu primera tabla tienes 7 campos y tu segunda tabla tienes 10 campos, entonces create un tabla de 10 campo, y ahi importa tu archivo CSV.

una vez ya importado a esta tabla puedes hacer un
insert into tabla_7_capos select ................ where campo10 is null. (para tu tabla de 7 campos)

y

insert into tabla_10_campos select ...............tabla_copy where campo10 not is null. (para tu tabla de 10 campos).

espero ayude.

Saludos.

ummm, yo hize un pequeña prueba con 3 columnas
que son estas en el archivo csv

1,1,
2,2,
3,3,
4,4,
5,5,
6,6,6
7,7,7
8,8,8
9,9,9
10,10,
11,11,11

cree una tabla de 3 columnas :
use el copy para insertarla en la tabla.

copy tabla_principal from 'E:/doc1/user/doc2/libro1.dat' with csv (tu dices que tu archivo tiene formato CSV solamente que esta con extensión DAT)

luego cree una tabla con dos columnas
he hize lo siguiente :
insert into tabla_2_col select tabla_principal.col1,tabla_principal.col2 from tabla_principal where tabla_principal.col3 is null

hay que fijarse que los tipos de datos son iguales en las dos tablas.

puedes hacer una prueba a pequeña escala, con 5 o 6 columnas y unos 25 a 40 registros, para tener un mejor control de la situación y despues que veas que todo esta Ok, ya mandarse con todo.

------------------------------------------------------------------------------

LLama Gratis a cualquier PC del Mundo.
Llamadas a fijos y móviles desde 1 céntimo por minuto.
http://es.voice.yahoo.com


From: Javier Estévez CIFA Córdoba <javier(dot)estevez(dot)ext(at)juntadeandalucia(dot)es>
To: "Miguel Juan" <mjuan(at)cibal(dot)es>, <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Importar fichero CSV
Date: 2007-04-03 12:24:40
Message-ID: 00ef01c775eb$0d987c90$6d64460a@cfco04.cap.juntaandalucia.es
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Me bajé el CYGWIN pero he tenido problemas al instalarlo porque el equipo
que tengo no está en Red, no me entero muy bien de qué paquetes hay que
bajar y demás...

DE todas formas, como ya he posteado antes, estoy haciéndolo en MATLAB.

Gracias por el esfuerzo a todos, de verdad.

----- Original Message -----
From: "Miguel Juan" <mjuan(at)cibal(dot)es>
To: <pgsql-es-ayuda(at)postgresql(dot)org>; "Javier Estévez CIFA Córdoba"
<javier(dot)estevez(dot)ext(at)juntadeandalucia(dot)es>
Sent: Tuesday, April 03, 2007 10:28 AM
Subject: Re: [pgsql-es-ayuda] Importar fichero CSV

> Hola Javier
>
> Si quieres separar el archivo por el primer número de cada línea solo
tienes
> que hacer lo siguiente:
>
> Opcion A:
> genera el archivo datos222.txt para todas las líneas que empiezen con 222
>
> grep -e ^222 datos.text >datos.txt
>
> Opcion B:
> Genera el archivo datos2.txt separando por el número de valores separados
> por comas de cada línea, en este caso se considera que el número de
valores
> es 12 ($NF==12)
>
> cat datos.txt| gawk -F ',' '$NF==12 {print $0}' >datos2.txt
>
>
>
> NOTA: Necesitaras acceso a un terminal Linux/Unix o instalarte el CYGWIN
en
> un Windows.
> http://www.cygwin.com
>
>
>
> ----- Original Message -----
> From: "Javier Estévez CIFA Córdoba"
<javier(dot)estevez(dot)ext(at)juntadeandalucia(dot)es>
> To: "Mario Gonzalez" <gonzalemario(at)gmail(dot)com>
> Cc: "Alvaro Herrera" <alvherre(at)commandprompt(dot)com>; "Javier Carlos"
> <javier(at)nediam(dot)com(dot)mx>; <pgsql-es-ayuda(at)postgresql(dot)org>
> Sent: Tuesday, April 03, 2007 9:23 AM
> Subject: Re: [pgsql-es-ayuda] Importar fichero CSV
>
>
> > Claro que sí, sin problema. Yo trabajo en AgroMeteorología, y de hecho
> > estoy
> > haciendo todas las funciones y desarrollos en Open Source para que la
> > comunidad científica pueda disponer de ellos.
> >
> > Podrías concretar?
> >
> > ----- Original Message -----
> > From: "Mario Gonzalez" <gonzalemario(at)gmail(dot)com>
> > To: "Javier Estévez CIFA Córdoba"
<javier(dot)estevez(dot)ext(at)juntadeandalucia(dot)es>
> > Cc: "Alvaro Herrera" <alvherre(at)commandprompt(dot)com>; "Javier Carlos"
> > <javier(at)nediam(dot)com(dot)mx>; <pgsql-es-ayuda(at)postgresql(dot)org>
> > Sent: Monday, April 02, 2007 3:14 PM
> > Subject: Re: [pgsql-es-ayuda] Importar fichero CSV
> >
> >
> >> On 02/04/07, Javier Estévez CIFA Córdoba
> >> <javier(dot)estevez(dot)ext(at)juntadeandalucia(dot)es> wrote:
> >> > Es fácil saberlo pues en mi archivo .DAT (estructura CSV), las líneas
> > con
> >> > más columnas el valor de la primera columna siempre es 201 y las
líneas
> > con
> >> > el mismo número de columnas el primer valor es 222.
> >> > Mi archivo es algo así:
> >> >
> >> > 222,75,1230,1,2,3,4,5,6,7,8,9
> >> > 222,75,1300,1,2,3,4,5,6,7,8,9
> >> > 222,75,1330,1,2,3,4,5,6,7,8,9
> >> > 201,75,2400,1,2,3,4,5,6,7,8,9,10,11,12
> >> > 222,76,1230,1,2,3,4,5,6,7,8,9
> >> > 222,76,1300,1,2,3,4,5,6,7,8,9
> >> >
> >>
> >> Eso des-complica mucho las cosas pero la idea es la misma. De modo
> >> que ya tienes algunas soluciones, recuerdo:
> >>
> >> - un programa en awk que genere dos archivos csv
> >> - un programa en python que debe modificarse en un par de lineas
> >> para que haga el volcado sin problemas.
> >>
> >> Pregunta, si alguien te hace el programa, y cumple con _tus_
> >> requerimientos y/o espectativas estarias dispuesto a hacer una
> >> donacion a algun proyecto PostgreSQL ;-) ?
> >>
> >> http://www.postgresql.org/about/donate
> >>
> >> >
> >>
> >> --
> >> http://www.advogato.org/person/mgonzalez/
> >>
> >
> >
> > ---------------------------(fin del mensaje)---------------------------
> > TIP 10: visita nuestro canal de IRC #postgresql-es en irc.freenode.net
> >
>
>


From: "Mario Gonzalez" <gonzalemario(at)gmail(dot)com>
To: Javier Estévez CIFA Córdoba <javier(dot)estevez(dot)ext(at)juntadeandalucia(dot)es>
Cc: "Alvaro Herrera" <alvherre(at)commandprompt(dot)com>, "Javier Carlos" <javier(at)nediam(dot)com(dot)mx>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Importar fichero CSV
Date: 2007-04-03 12:48:31
Message-ID: 2065a6cf0704030548qe094217xada7b3b9c0e698e5@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

On 03/04/07, Javier Estévez CIFA Córdoba
<javier(dot)estevez(dot)ext(at)juntadeandalucia(dot)es> wrote:
> Claro que sí, sin problema. Yo trabajo en AgroMeteorología, y de hecho estoy
> haciendo todas las funciones y desarrollos en Open Source para que la
> comunidad científica pueda disponer de ellos.
>

Bueno, podrias hacer lo siguiente. Quizas en una WEB...

- Dejar disponible un archivo bien grande de ejemplo
- Tener disponible la estructura de las tablas
- Una explicacion del problema y los resultados esperados

Asi entre los lectores de esta lista proponemos soluciones y la
mejoramos si es necesaria. Todo para aportar el dinero que Javier
estime conveniente a PostgreSQL, asi creamos una sana competencia.

>

--
http://www.advogato.org/person/mgonzalez/


From: Nicola Strappazzon <nicola51980(at)gmail(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Fwd: Importar fichero CSV
Date: 2007-04-03 16:52:10
Message-ID: FE3E7010-D812-4A7F-AA1B-B7EA1135D4E4@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Tengo la solucion de como importar archivos, aqui te pongo el query.

-- script_migrar_datospersonales.sql

BEGIN;
SET client_encoding TO LATIN1;

/*
PASO 1:
=======
Creamos una tabla temporal para alojar los datos del archivo
y poder normalizarlos de una forma para que puedan migrarse.
------------------------------------------------------------
*/
CREATE TEMPORARY TABLE tbl_tmp_RecordsAcademicos
(
Columna_0 SERIAL NOT NULL, -- Serial.
Columna_1 INT8, -- C.I.
Columna_2 VARCHAR(3), -- Nacionalidad
Columna_3 VARCHAR(45), -- Primer Apellido
Columna_4 VARCHAR(45), -- Segundo Apellido
Columna_5 VARCHAR(45), -- Primer Nombre
Columna_6 VARCHAR(45), -- Segundo Nombre
Columna_7 VARCHAR(255), -- Direccion
Columna_8 VARCHAR(12), -- Telefono
Columna_9 VARCHAR(3), -- Genero
Columna_10 VARCHAR(10), -- FN
CONSTRAINT Columna_0 PRIMARY KEY (Columna_0)
) ON COMMIT DROP;

/*
PASO 2:
=======
Lemos el archivo a migrar y lo introducimos a la tabla temporal.
----------------------------------------------------------------
*/
COPY tbl_tmp_RecordsAcademicos(Columna_1,
Columna_2,
Columna_3,
Columna_4,
Columna_5,
Columna_6,
Columna_7,
Columna_8,
Columna_9,
Columna_10)
FROM '/home/usuario/DP.txt'
DELIMITER AS ',';

SELECT * FROM tbl_tmp_RecordsAcademicos;
END;

Te explico que es lo que hace el query:
1. creamos una tabla temporal que se borra al finalizar al hacer
commit, eso pasa cuando llega al END;
2. la tabla temporal debe tener todos los campos que tiene el archivo
y el tipo de dato que esta dentro de el, esta parte es la que hay q
modificar para adaptarlo al archivo.
3. Despues utilizamos la sentencia COPY para leer los datos del
archivo en una ubicacion en especifico 'home/usuario/DP.txt' en el
servidor, especificamos un delimitador ',' y tambien las columnas de
la tabla temporal donde pondremos las columnas del archivo.
4. por ultimo te puse un select para que vieras los datos insertados
dentro de la tabla.

Como lo usas? Simple, lo tienes q poner dentro de un archivo .sql, y
lo ejecutas por sonsola:

psql -h localhost -U postgres -d MiBasesDeDatos -f
script_migrar_datospersonales.sql

P.D.
Espero que sea util la ayuda, suerte!.

Begin forwarded message:

> From: Javier Estévez CIFA Córdoba
> <javier(dot)estevez(dot)ext(at)juntadeandalucia(dot)es>
> Date: April 2, 2007 3:08:54 AM GMT-04:00
> To: "Alvaro Herrera" <alvherre(at)commandprompt(dot)com>, "Mario Gonzalez"
> <gonzalemario(at)gmail(dot)com>
> Cc: "Javier Carlos" <javier(at)nediam(dot)com(dot)mx>, <pgsql-es-
> ayuda(at)postgresql(dot)org>
> Subject: Re: [pgsql-es-ayuda] Importar fichero CSV
>
> Es fácil saberlo pues en mi archivo .DAT (estructura CSV), las
> líneas con
> más columnas el valor de la primera columna siempre es 201 y las
> líneas con
> el mismo número de columnas el primer valor es 222.
> Mi archivo es algo así:
>
> 222,75,1230,1,2,3,4,5,6,7,8,9
> 222,75,1300,1,2,3,4,5,6,7,8,9
> 222,75,1330,1,2,3,4,5,6,7,8,9
> 201,75,2400,1,2,3,4,5,6,7,8,9,10,11,12
> 222,76,1230,1,2,3,4,5,6,7,8,9
> 222,76,1300,1,2,3,4,5,6,7,8,9
>
>
> ...
>
> ----- Original Message -----
> From: "Alvaro Herrera" <alvherre(at)commandprompt(dot)com>
> To: "Mario Gonzalez" <gonzalemario(at)gmail(dot)com>
> Cc: "Javier Carlos" <javier(at)nediam(dot)com(dot)mx>; "Javier Estévez CIFA
> Córdoba"
> <javier(dot)estevez(dot)ext(at)juntadeandalucia(dot)es>; <pgsql-es-
> ayuda(at)postgresql(dot)org>
> Sent: Friday, March 30, 2007 4:39 PM
> Subject: Re: [pgsql-es-ayuda] Importar fichero CSV
>
>
> Mario Gonzalez escribió:
>> On 30/03/07, Alvaro Herrera <alvherre(at)commandprompt(dot)com> wrote:
>>>
>>> Lo que yo haria seria un programa en shell (quizas en awk? o en
>>> perl)
>>> que divida el archivo y arroje las lineas a dos archivos
>>> separados, y
>>> luego haria COPY de los dos archivos de salida.
>>
>> Usando el mismo archivo CSV que mostre de ejemplo, algo en shell
>> como lo que dice Alvaro:
>>
>> mario(at)mario:~$ cut -d , -f1,2 archivo_csv
>> 1,2
>> 4,5
>> 7,8
>>
>> mario(at)mario:~$ cut -d , -f3 archivo_csv
>> 3
>> 6
>> 9
>
> No no, entiendo que el problema es que el OP tiene un archivo que es
> algo asi:
>
> 1,2,3
> 4,5,6
> 7,8,9,10,11
> 2,3,4
> 3,4,5
> 3,4,5,6,7
>
> Entonces el asunto es que hay que poner las lineas 1, 2, 4 y 5 en una
> tabla, y las lineas 3 y 6 en otra. El problema es saber cuales lineas
> tienen 3 columas y cuales tienen 5. Puntos extra si recorres el
> archivo
> completo solo una vez.
>
> --
> Alvaro Herrera http://
> www.CommandPrompt.com/
> PostgreSQL Replication, Consulting, Custom Development, 24x7 support
>
>
> ---------------------------(fin del
> mensaje)---------------------------
> TIP 7: no olvides aumentar la configuración del "free space map"

Nicola Strappazzon
nicola51980(at)gmail(dot)com


From: Nicola Strappazzon <nicola51980(at)gmail(dot)com>
To: PostgreSQL Ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Importar fichero CSV
Date: 2007-04-03 22:12:50
Message-ID: 28687071-C836-49D7-AFD7-02CAE8D3012A@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Tengo la solucion de como importar archivos, aqui te pongo el query.

-- script_migrar_datospersonales.sql

BEGIN;
SET client_encoding TO LATIN1;

/*
PASO 1:
=======
Creamos una tabla temporal para alojar los datos del archivo
y poder normalizarlos de una forma para que puedan migrarse.
------------------------------------------------------------
*/
CREATE TEMPORARY TABLE tbl_tmp_RecordsAcademicos
(
Columna_0 SERIAL NOT NULL, -- Serial.
Columna_1 INT8, -- C.I.
Columna_2 VARCHAR(3), -- Nacionalidad
Columna_3 VARCHAR(45), -- Primer Apellido
Columna_4 VARCHAR(45), -- Segundo Apellido
Columna_5 VARCHAR(45), -- Primer Nombre
Columna_6 VARCHAR(45), -- Segundo Nombre
Columna_7 VARCHAR(255), -- Direccion
Columna_8 VARCHAR(12), -- Telefono
Columna_9 VARCHAR(3), -- Genero
Columna_10 VARCHAR(10), -- FN
CONSTRAINT Columna_0 PRIMARY KEY (Columna_0)
) ON COMMIT DROP;

/*
PASO 2:
=======
Lemos el archivo a migrar y lo introducimos a la tabla temporal.
----------------------------------------------------------------
*/
COPY tbl_tmp_RecordsAcademicos(Columna_1,
Columna_2,
Columna_3,
Columna_4,
Columna_5,
Columna_6,
Columna_7,
Columna_8,
Columna_9,
Columna_10)
FROM '/home/usuario/DP.txt'
DELIMITER AS ',';

SELECT * FROM tbl_tmp_RecordsAcademicos;
END;

Te explico que es lo que hace el query:
1. creamos una tabla temporal que se borra al finalizar al hacer
commit, eso pasa cuando llega al END;
2. la tabla temporal debe tener todos los campos que tiene el archivo
y el tipo de dato que esta dentro de el, esta parte es la que hay q
modificar para adaptarlo al archivo.
3. Despues utilizamos la sentencia COPY para leer los datos del
archivo en una ubicacion en especifico 'home/usuario/DP.txt' en el
servidor, especificamos un delimitador ',' y tambien las columnas de
la tabla temporal donde pondremos las columnas del archivo.
4. por ultimo te puse un select para que vieras los datos insertados
dentro de la tabla.

Como lo usas? Simple, lo tienes q poner dentro de un archivo .sql, y
lo ejecutas por sonsola:

psql -h localhost -U postgres -d MiBasesDeDatos -f
script_migrar_datospersonales.sql

P.D.
Espero que sea util la ayuda, suerte!.

Begin forwarded message:

> From: Javier Estévez CIFA Córdoba
> <javier(dot)estevez(dot)ext(at)juntadeandalucia(dot)es>
> Date: April 2, 2007 3:08:54 AM GMT-04:00
> To: "Alvaro Herrera" <alvherre(at)commandprompt(dot)com>, "Mario Gonzalez"
> <gonzalemario(at)gmail(dot)com>
> Cc: "Javier Carlos" <javier(at)nediam(dot)com(dot)mx>, <pgsql-es-
> ayuda(at)postgresql(dot)org>
> Subject: Re: [pgsql-es-ayuda] Importar fichero CSV
>
> Es fácil saberlo pues en mi archivo .DAT (estructura CSV), las
> líneas con
> más columnas el valor de la primera columna siempre es 201 y las
> líneas con
> el mismo número de columnas el primer valor es 222.
> Mi archivo es algo así:
>
> 222,75,1230,1,2,3,4,5,6,7,8,9
> 222,75,1300,1,2,3,4,5,6,7,8,9
> 222,75,1330,1,2,3,4,5,6,7,8,9
> 201,75,2400,1,2,3,4,5,6,7,8,9,10,11,12
> 222,76,1230,1,2,3,4,5,6,7,8,9
> 222,76,1300,1,2,3,4,5,6,7,8,9
>
>
> ...
>
> ----- Original Message -----
> From: "Alvaro Herrera" <alvherre(at)commandprompt(dot)com>
> To: "Mario Gonzalez" <gonzalemario(at)gmail(dot)com>
> Cc: "Javier Carlos" <javier(at)nediam(dot)com(dot)mx>; "Javier Estévez CIFA
> Córdoba"
> <javier(dot)estevez(dot)ext(at)juntadeandalucia(dot)es>; <pgsql-es-
> ayuda(at)postgresql(dot)org>
> Sent: Friday, March 30, 2007 4:39 PM
> Subject: Re: [pgsql-es-ayuda] Importar fichero CSV
>
>
> Mario Gonzalez escribió:
>> On 30/03/07, Alvaro Herrera <alvherre(at)commandprompt(dot)com> wrote:
>>>
>>> Lo que yo haria seria un programa en shell (quizas en awk? o en
>>> perl)
>>> que divida el archivo y arroje las lineas a dos archivos
>>> separados, y
>>> luego haria COPY de los dos archivos de salida.
>>
>> Usando el mismo archivo CSV que mostre de ejemplo, algo en shell
>> como lo que dice Alvaro:
>>
>> mario(at)mario:~$ cut -d , -f1,2 archivo_csv
>> 1,2
>> 4,5
>> 7,8
>>
>> mario(at)mario:~$ cut -d , -f3 archivo_csv
>> 3
>> 6
>> 9
>
> No no, entiendo que el problema es que el OP tiene un archivo que es
> algo asi:
>
> 1,2,3
> 4,5,6
> 7,8,9,10,11
> 2,3,4
> 3,4,5
> 3,4,5,6,7
>
> Entonces el asunto es que hay que poner las lineas 1, 2, 4 y 5 en una
> tabla, y las lineas 3 y 6 en otra. El problema es saber cuales lineas
> tienen 3 columas y cuales tienen 5. Puntos extra si recorres el
> archivo
> completo solo una vez.
>
> --
> Alvaro Herrera http://
> www.CommandPrompt.com/
> PostgreSQL Replication, Consulting, Custom Development, 24x7 support
>
>
> ---------------------------(fin del
> mensaje)---------------------------
> TIP 7: no olvides aumentar la configuración del "free space map"

Nicola Strappazzon
nicola51980(at)gmail(dot)com