Re: Importar fichero CSV

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
Thread:
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

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Mario Wojcik 2007-04-02 14:59:08 Re: Rv: Re: Sentencia SQL para dos registros por grupo
Previous Message Mario Gonzalez 2007-04-02 13:14:30 Re: Importar fichero CSV