________________________________
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