Skip site navigation (1) Skip section navigation (2)

Re: Crear tabla a partir de un archivo de texto

From: Gabriel Ferro <gabrielrferro(at)yahoo(dot)com(dot)ar>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Crear tabla a partir de un archivo de texto
Date: 2009-05-28 11:05:18
Message-ID: 34194.38299.qm@web52106.mail.re2.yahoo.com (view raw or flat)
Thread:
Lists: pgsql-es-ayuda


________________________________
 De: jose ricardo <joripeca(at)yahoo(dot)com(dot)ar>
Para: psql <pgsql-es-ayuda(at)postgresql(dot)org>
Enviado: miércoles 27 de mayo de 2009, 20:26:07
Asunto: [pgsql-es-ayuda] Crear tabla a partir de un archivo de texto


Un caluroso saludo a todos los miembros de esta comunidad.

Resulta que a partir de este mes voy a recibir un cd con varios archivos unos en una db acces y otras en texto plano.  estos archivos debo vaciarlos en una o unas tablas de una db para que los usuarios de esta puedan consultarlo (la db en acces pienso exportarla a texto plano). el problema al que me enfrento es el numero de registro pues un solo archivo tiene alrrededor de 3.000.000 de esto el y los otros 3 unidos me dan unos 2.000.000 mas. tengo una tabla en la db la cual utilizo con este fin pero claro antes el archivo mas grande contenia alrrededor de 7000 registro un numero muy pequeño y facil de manipular. el otro problema es que los registro en los diferentes archivos no tienen el mismo tamaño, y sus campos tampoco coinciden en cuanto a dato.  antes con los archivos pequewños yo hacia una manipulacion de ellos reacomodano campos suprimiendo los que me sobraban etc hasta lograr le estructura requerida para la tabla. pero con mas de 4.000.000 es
 muy costoso hacerlo. 
-Lo que se me ocurre es generar una tabla por cada archivo recibido, y luego para la consulta hacer  una union de ellas, claro que esta idea no me cala 100% pues el coste de esa union seria muy alto.

-Otra idea seria generar una tabla por cada archivo y luego mediante un scrip obtener los datos requerido de cada tabla e insertarlos en una unica tabla formado por los registros de cada una de ellas me inclino mas por esta.  

¿Alguien me podria dar luces sobre cual de estos metodos es mas eficiente? o si existe alguna forma de hacerlo lo mismo pero de una forma mas elegante y rapida.
 
¿Alguien me puede decir si existe en postgre algun comando que a partir de una archivo de texto plano (separado por algun caracter en especial ) permita generar una tabla?

agradezco cualqueir ayuda

________________________________

Yo tuve exactamente el mismo problema, pero con muchos mas registros. Lo que hice fue partir el texto plano en archivos mas pequeños, luego desde excel agregue lo necesario para transformar cada linea en llamadas a una funcion
Ej.
            colA                             colB                 colC          colD                                                          colE
select * from funcX('                  dato1                dato2          =concat(colA;colB;" ',";colC;");")           pego los valores de colD

ahora solo grabo en un archivo de texto con extension ".sql"  solo la columnE.....(puedes volver a unirlos a todos en uno solo)
---otra posibiliad es usar comandos linux/bash para hacer esto.

programas a funcX para que procese los campos, vallide e inserte donde corresponda
luego desde el pgsql, solo le digo que cargue el o los archivos sql

me sirvio, demora, pero no es tanto laburo. ¿chancho?, puede ser..
Saludos..



      ____________________________________________________________________________________
¡Viví la mejor experiencia en la web!
Descargá gratis el nuevo Internet Explorer 8
http://downloads.yahoo.com/ieak8/?l=ar

In response to

pgsql-es-ayuda by date

Next:From: Gabriel FerroDate: 2009-05-28 11:15:15
Subject: Re: Problema con OLE DB PROVIDER
Previous:From: Rodriguez FernandoDate: 2009-05-28 11:01:27
Subject: Re: Consulta 1:Problemas con un simple delete

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group