________________________________
 De: jose ricardo <[email protected]>
Para: psql <[email protected]>
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

Responder a