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