Identificarte

Versión Completa : de excel a postgres en php?????


Sponsored links
.




OGMA
septiembre 3, 2005, 11:06
alguien puede ayudarme con esta incognita, lo que quiero hacer es como una especie de batch en php,estoy trabajando con postgres.me explico: coger un archivo (puede ser en excel) que contenga una serie de datos; ya sea nombre direccion, telefono, etc... y guardarlos en una tabla de la BD que contenga todos estos registros(nombre, direccion, telefono, etc..), si o q??? entonces la vaina es q en un formulario puedo abrir el archivo y preionar un boton y q automaticamente me los guarde separando cada uno de los campos, si no me entienden me dicen trato de explicarlo mas :) especificamente, ok?
el archivo iria asi:por ej

nombretabulardirecciontabulartelefonoenter
nombretabulardirecciontabulartelefonoenter
nombretabulardirecciontabulartelefonoenter
nombretabulardirecciontabulartelefonoenter
nombretabulardirecciontabulartelefonoenter

poppetmaster
septiembre 3, 2005, 12:11
Hola..
porque no generas con un csv del archivo excel y luego podrias leer el archivo con la funcion fgetcsv() :
http://www.php.net/manual/es/function.fgetcsv.php

OGMA
septiembre 3, 2005, 07:22
ok, pero como puedo independizar cada termino para guardarlo en la bd, en su registro correspondiente, osea, el campo que contiene el nombre, guardarlo en la tabla que contiene el registro nombre....?

segan
septiembre 6, 2005, 08:04
Puedes determinarlo de la siguiente manera....

1. Debes guardar el archivo de Excel con extención *.CSV delimitando los campos con "," ó ";" (Esto depende de la versión y Hoja de Calculo que estes utilizando para hacer esta operación (Excel ó Oppen Office), no te preocupes si el tamaño se redujo cerca de un 25% a 50% ya que las cosas que agregan las hojas de calculo son las aumentan el tamaño... Si tienes formulas especiales en las celdas estas se perderan y guardarn el valor que tengan en ellas...

2. Puedes abrir el archivo *.Cvs en cualquier editor de texto y verificaras cual es el delimitante que ha generado la hoja de calculo por si sola.... luego debes guardar este archivo en la carpeta de tu proyecto....en caso de que hayan celdas vacias el pondra el delimitador 2 veces y sera un campo vacío.

3. Ahora necesitas el codigo Php que se encargue de abrir el archivo, leerlo y sacar las columnas, definirlas en un array php y luego introducirlo en la bd postgres y esto seria algo asi!El ejemplo se basa en una tabla excel de 4 columnas

<?php
$archivo = fopen ("tabla.csv","r");// Para abrir el archivo y poder leerlo
while (!feof($archivo)){ //Mientras no encuentra el final del archivo
$linea = fgets($archivo,4092); // Tome las lineas por tamaño de 4092 bytes
list($campo1,$campo2,$campo3,$campo4) = explode (",",$linea); //Extraiga los campos del array y defina los campos por medio del delimitador que es una ","
pg_query("INSERT INTO prueba VALUES ('$campo1','$campo2','$campo3','$campo4')"); //Cada vez que encuentra una linea ejecuta el insert
}
?>

4. Ha grandes rasgos este el código necesario para hacer un insert en una tabla... puedes agregar un codigo html para la generación de una tabla previsualizadora y sera mucho más profesional tu trabajo...

poppetmaster
septiembre 6, 2005, 10:03
Puedes determinarlo de la siguiente manera....

1. Debes guardar el archivo de Excel con extención *.CSV delimitando los campos con "," ó ";" (Esto depende de la versión y Hoja de Calculo que estes utilizando para hacer esta operación (Excel ó Oppen Office), no te preocupes si el tamaño se redujo cerca de un 25% a 50% ya que las cosas que agregan las hojas de calculo son las aumentan el tamaño... Si tienes formulas especiales en las celdas estas se perderan y guardarn el valor que tengan en ellas...

2. Puedes abrir el archivo *.Cvs en cualquier editor de texto y verificaras cual es el delimitante que ha generado la hoja de calculo por si sola.... luego debes guardar este archivo en la carpeta de tu proyecto....en caso de que hayan celdas vacias el pondra el delimitador 2 veces y sera un campo vacío.

3. Ahora necesitas el codigo Php que se encargue de abrir el archivo, leerlo y sacar las columnas, definirlas en un array php y luego introducirlo en la bd postgres y esto seria algo asi!El ejemplo se basa en una tabla excel de 4 columnas

<?php
$archivo = fopen ("tabla.csv","r");// Para abrir el archivo y poder leerlo
while (!feof($archivo)){ //Mientras no encuentra el final del archivo
$linea = fgets($archivo,4092); // Tome las lineas por tamaño de 4092 bytes
list($campo1,$campo2,$campo3,$campo4) = explode (",",$linea); //Extraiga los campos del array y defina los campos por medio del delimitador que es una ","
pg_query("INSERT INTO prueba VALUES ('$campo1','$campo2','$campo3','$campo4')"); //Cada vez que encuentra una linea ejecuta el insert
}
?>

4. Ha grandes rasgos este el código necesario para hacer un insert en una tabla... puedes agregar un codigo html para la generación de una tabla previsualizadora y sera mucho más profesional tu trabajo...
para eso esta la funcion que dije mas arriba (fgetcsv()) para no tener que hacer un explode por cada linea del fichero

segan
septiembre 6, 2005, 03:47
Si claro, fgetscsv podria servir... pero keria dar el ejemplo especifico ya que el explode es más sencillo de manejar porke tiene amplia versatilidad al momento de leer una variable y determinar booleanamente(?) el string contenido en ella misma.

Además fgetcsv() en efectos practicos funciona igual que el explode() y fgets() en una sola función, pero tiene un gran incoveniente leyendo grandes lineas y es casi incapaz de determinar un fin de linea despues del byte 4092 (Probado por experiencia propia en migración de datos).

La idea de mi explicación NO es dar una respuesta absoluta (Primera Regla en Programación), pero para poder entender algunas cosas es mejor remitirse a lo básico.

OGMA
septiembre 6, 2005, 04:22
ok, muchas gracias , voy a implementarlos y les comento como me fue....

OGMA
septiembre 6, 2005, 05:28
bueno les cuento q el script me funciono perfectamente, tuve que hacerle alguuunos cambios pequeños pero me funciono de maravilla, pues tampoco esta pidiendo algo tan molido preo....... :)bueno, de nuevo les doy las gracias por interesarse en mi pregunta.

segan
septiembre 6, 2005, 06:55
Hombre es un placer ayudar! laneros tambien me ha ayudado muchisimo!

balserito
septiembre 11, 2007, 09:29
bueno amigos, yo tambien ando en las mismas, tengo un archivo plano, CSV, que contiene por linea 8 datos separados por comas ",", los cuales tengo que ir a validar en tablas de oracle, para poder luego almacenarlos en otra tabla oracle o devolver un error al cliente diciendo que sus datos estan errados.
veo que esta funcion me podria ayudar, pero como puedo hacer las comparaciones de cada dato con los campos de las tablas, a ver si son validas y coinciden para poder almacenarlos?
les agradesco, soy nuevo en programacion, pero me esta gustando mucho, me toca trabajar con pl/sql y oracle