Foros del Web » Programando para Internet » PHP »

Excel a Mysql

Estas en el tema de Excel a Mysql en el foro de PHP en Foros del Web. hola a to2: estoy recien empezando con esto de php llevo + o - una semana y tengo la siguiente duda ojala ke me ayuden: ...
  #1 (permalink)  
Antiguo 28/07/2003, 01:00
 
Fecha de Ingreso: julio-2003
Mensajes: 8
Antigüedad: 14 años, 4 meses
Puntos: 0
Excel a Mysql

hola a to2:

estoy recien empezando con esto de php llevo + o - una semana y tengo la siguiente duda ojala ke me ayuden:

desde un archivo excel quiero llenar una tabla de un bd en mysql

he leido las faq's pero sale como exportar desde mysql a excel y en los otrso post no entiendo muy bien.

ejemplo

la tabla tiene estos campos:
codigo=varchar(10) , nombres=varchar(30), apellidos=varchar(30)

bueno y en la hoja de excel seria + o - asi

Codigo Nombres Apellidos
------------------------------------------------------------
001 Juan Antonio Perez Gonzales
002 Marcela Andrea Smith Lagos



entonces segun esots datos como seria llenar la tabla desde la hoja de excel?


gracias y ojala k me ayuden
  #2 (permalink)  
Antiguo 28/07/2003, 02:34
Avatar de ||Dj||  
Fecha de Ingreso: enero-2002
Mensajes: 2.349
Antigüedad: 15 años, 10 meses
Puntos: 1
Exporta la hoja de calculo a .csv y luego haces:

LOAD DATA LOCAL INFILE 'path/archivo.csv' INTO TABLE tabla FIELDS TERMINATED BY ';';

Saludos.
  #3 (permalink)  
Antiguo 28/07/2003, 09:31
 
Fecha de Ingreso: julio-2003
Ubicación: Colombia
Mensajes: 591
Antigüedad: 14 años, 4 meses
Puntos: 7
archivo...

Dj, tu sabes como iria ese path; o que directiva se le da si el archivo csv, no está en la misma máquina sino en otra máquina en red lan????
Te agradezco
Chaop!
  #4 (permalink)  
Antiguo 28/07/2003, 11:08
Avatar de jpogsistem  
Fecha de Ingreso: diciembre-2001
Mensajes: 2.405
Antigüedad: 16 años
Puntos: 4
Lo más Fácl y como yo he realizado lo que dices esde la siguiente manera:

Tienes el Archivo en Excel, expórtalo como .csv

Importa el .csv a Acces (teniendo en Cuenta los nombres de las Columnas y tipos de Datos)

Luego con el Mysql Fron 2.5 (lo consigues en www.softonic.com).
Vas a la opción de Import/Export Allí seleccionas ODBC Import. Direccionas el Archivo de Acces (Previamente has debido crear la base de datos en Mysql) y el Mysql Front hace la migración y todo queda perfecto.

Saludos.
__________________
EL LIMITE ES EL UNIVERSO
  #5 (permalink)  
Antiguo 28/07/2003, 12:50
 
Fecha de Ingreso: julio-2003
Mensajes: 8
Antigüedad: 14 años, 4 meses
Puntos: 0
mmm mi eterno problema no me expreso bien conversando ni menos escribiendo

el codigo k me dieron es para ocuparlo directamente del mysqlfront , es decir, en el front yo cargo los datos k estan en el archivo CSV hacia una bd mysql.

mi idea es k un script de php pueda hacer ese proceso

yaq el servidor esta en base a linux (red-hat 9) por ende no puedo ocupar mysqlfront y la idea es k cualquiera persona (simepre y cuando tenga los permisos) pueda llenar una tabla de mysql en base a datos de un file CSV

La idea es k no siemrpe la persona k ingrese los datos del file CSV tenga acceso directo al servidor , ya k si ocurre lo contrario seria poner el codigo k me dijeron en la consola de mysql :D


.. ojala esta vez haya escrito las ideas correctas y me entinedan..


chau...


PD: de todas formas gracias por el cosigo anterior algun dia lo usare
  #6 (permalink)  
Antiguo 28/07/2003, 12:54
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 15 años, 10 meses
Puntos: 5
Pues si no me equivoco, el query sirve para correrlo desde PHP tambien...

Código PHP:
mysql_query("LOAD DATA LOCAL INFILE 'path/archivo.csv' INTO TABLE tabla FIELDS TERMINATED BY ';'"); 
__________________
Manoloweb
  #7 (permalink)  
Antiguo 28/07/2003, 14:07
 
Fecha de Ingreso: julio-2003
Mensajes: 8
Antigüedad: 14 años, 4 meses
Puntos: 0
muchas gracias !!!



  #8 (permalink)  
Antiguo 08/09/2003, 17:06
Avatar de kawoq  
Fecha de Ingreso: mayo-2002
Ubicación: Xela
Mensajes: 491
Antigüedad: 15 años, 6 meses
Puntos: 0
Yo tengo un problema similar, intentare con lo que han mencionado, pero tengo un par de dudas

1. Estamos hablando a nivel local, pero para llevarlas al internet como seria. O como se subiria la base de datos con todos los registros.

2. Tengo 15000 registros aproximadamente, con 8 campos cada uno. ¿Es bastante fiable esto para volcar semejante cantidad de datos?

La sentencia:
Código PHP:
mysql_query("LOAD DATA LOCAL INFILE 'path/archivo.csv' INTO TABLE tabla FIELDS TERMINATED BY ';'"); 
donde la coloco?

Gracias amigos. y Saludos.
  #9 (permalink)  
Antiguo 09/09/2003, 00:13
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Esa sentencia es código PHP así que deberas implementar la lógica para conectar a tu BD seleccionar la BD y ejecutar ese query (consulta) ..

Otra opción es que uses tu phpMyadmin y lo hagas desde ahí .. que ya tiene la opción de importar datos en cvs.

Si tienes acceso "shell" a tu Msyql .. ejecuta esa consulta desde la consula:
mysql> Load ...

Desde consola irá muchooo más rápido ese proceso que lanzado desde PHP (sea un script tuyo o phpMyadmin)

Y .. si tienes oportunidad usa:
www.mysqlstudio.com
ó
www.msyqlmanager.com

Ambos son GUI's para Msyql en entorno Windonws .. Entre sus numerosas funcionalidades están la de importar datos (desde diferentes formatos) a base de "asistentes" .. incluye XLS directo entre otros ...

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #10 (permalink)  
Antiguo 09/09/2003, 05:04
Avatar de davidMS  
Fecha de Ingreso: abril-2003
Ubicación: Chepe
Mensajes: 202
Antigüedad: 14 años, 7 meses
Puntos: 0
kawoq, te aseguro que el script en php funciona muy bien, yo tuve un caso parecido... y la verdad no me fallo!
  #11 (permalink)  
Antiguo 10/09/2003, 15:10
Avatar de SkyWalker  
Fecha de Ingreso: enero-2002
Mensajes: 39
Antigüedad: 15 años, 10 meses
Puntos: 0
Si alguien tiene problemas se puede fijar en un script q he puesto en otro mensaje, no se como hacer un link pero si pones LOAD DATA LOCAL en el buscador de aki lo encuentras!

Saludos
  #12 (permalink)  
Antiguo 06/07/2004, 06:05
 
Fecha de Ingreso: mayo-2004
Mensajes: 398
Antigüedad: 13 años, 7 meses
Puntos: 4
¿Por qué me da error de comando sql??

Buenas

Es así:

mysql_query("LOAD DATA LOCAL INFILE 'c:/emails.csv' INTO TABLE suscriptor FIELDS TERMINATED BY ';'");

o

mysql_query("LOAD DATA LOCAL INFILE 'c:\emails.csv' INTO TABLE suscriptor FIELDS TERMINATED BY ';'");



En las dos me dá error
  #13 (permalink)  
Antiguo 06/07/2004, 07:06
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Y qué error te dá?

Un saludo,
  #14 (permalink)  
Antiguo 06/07/2004, 09:44
Avatar de fenix_ikki  
Fecha de Ingreso: mayo-2004
Mensajes: 25
Antigüedad: 13 años, 6 meses
Puntos: 0
Holas todos

Sino fuera mucha molestia o mucho pedir porque mejor no ponen la sentencia completa para q puede ser entendible no creen...?
  #15 (permalink)  
Antiguo 07/07/2004, 07:45
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
fenix_ikki ..

Pero, .. que "sentencia completa para q puede ser entendible" ...

La "sentencia" completa es ese SQL de "LOAD ...". El uso desde PHP se ha de "ejecutar" esa sentencia SQL y eso lo haces con la función mysql_query() al igual que por ahí haces tus "SELECT .." comunes entre otras cosas.

Para usar "mysql_query()" antes tendrás que haber conectado a tu Base de datos (mysql_connect()) y seleccionado tu BD a trabajar (mysql_select_db() ..). ¿ Es eso lo que quieres también?

Un saludo,
  #16 (permalink)  
Antiguo 07/07/2004, 16:19
 
Fecha de Ingreso: abril-2002
Mensajes: 60
Antigüedad: 15 años, 7 meses
Puntos: 0
Una forma sencilla, es utilizando las propias formulas de excel

Una forma sencilla, es utilizar las formulas de excel, para generar tu código SQL, aquí te envio un archivo en EXCEL, en la hoja "original", están los datos como los trabajarias normalmente, y en la hoja "EN SQL" está el código generado con las formulas de Excel. Luego seleccionas los datos de esta hoja, y los pegas en el word pad para luego guardarlo como sql, y estará listo para que lo subas desde tu MYsql Admin.

BAJATE EL ARCHIVO AQUÍ
www10.brinkster.com/franklinext/datos1.zip
__________________
http://www.autosyautos.com

Última edición por kilobyte; 07/07/2004 a las 16:29
  #17 (permalink)  
Antiguo 10/07/2004, 03:42
 
Fecha de Ingreso: mayo-2004
Mensajes: 398
Antigüedad: 13 años, 7 meses
Puntos: 4
Para mí lo más sencillo es...

Me gusta lo simple del archivo excel que has puesto kilobyte, aunque ya para mí lo más simple es importar directamente desde phpadmin, en este tu seleccionas el archivo y luego le dices en las columnas q quieres insertar los datos.

Salu2
  #18 (permalink)  
Antiguo 26/07/2004, 11:14
 
Fecha de Ingreso: octubre-2003
Mensajes: 21
Antigüedad: 14 años, 1 mes
Puntos: 0
Error en la sentencia!!!

He probado la siguiente sentencia con php

mysql_query ("LOAD DATA LOCAL INFILE '$textfile' INTO TABLE archivo FIELDS TERMINATED BY ',' ESCAPED BY '\\' LINES TERMINATED BY '\r\n'");

y recivo el error

You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ''' at line 2

no sé que sucede espero vuestra ayuda

saludos
  #19 (permalink)  
Antiguo 26/07/2004, 11:25
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Parece qeu tu $textfile no está tomando el valor esperado ..

Usa preferentemente:

Código PHP:
$sql="tus sentencias SQL";
mysql_query($sql) or die (mysql_error()); 
para que puedas hacer por ejemplo:
Código PHP:
echo $sql
y observes que sentencia SQL es la que realmente (combinando el uso de variables que hagas y demás ..) es lo que se va a ejecutar.

Un saludo,
  #20 (permalink)  
Antiguo 26/07/2004, 12:08
 
Fecha de Ingreso: octubre-2003
Mensajes: 21
Antigüedad: 14 años, 1 mes
Puntos: 0
Parece que tengo otros errores :)

Tengo el siguiente codigo html

Código HTML:
<form action="procesar_archivo.php" method="post" enctype="multipart/form-data">
    <table cellpadding="5" border="2">
    <tr>
         <td colspan="2"><input type="file" name="textfile" /></td>
        <td><input type="submit" name="btnLDI" value="Enviar" /></td>
    </table
>

este pasa al script de php procesar_archivo.php el cual es el siguiente

Código PHP:
<?
echo $textfile;
mysql_query ("LOAD DATA LOCAL INFILE '$textfile' INTO TABLE archivo FIELDS TERMINATED BY ',' ESCAPED BY '\\' LINES TERMINATED BY '\r\n'");
echo 
mysql_error();
?>
creo que tengo algun error con el manejdo del archivo...antes de cargar los datos en la tabla mysql

De ante mano Gracias !!!!
  #21 (permalink)  
Antiguo 26/07/2004, 15:41
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
pmolina ...

No puedes hacer lo que estás haciendo. EL archivo que acepta "LOAD DATA ..." ha de estar en el servidor primeramente. El proceso de Upload que haces no es correcto.

Lee la documentación oficial para hacer "Uploads" con PHP ..
http://www.php.net/manual/en/features.file-upload.php

Dependiendo de la configuración de PHP .. podrías hacer algo tipo:

Código PHP:
mysql_query ("LOAD DATA LOCAL INFILE '".$_FILES['textfile']['tmp_name']."' INTO TABLE archivo FIELDS TERMINATED BY ',' ESCAPED BY '\\' LINES TERMINATED BY '\r\n'"); 
echo 
mysql_error(); 
pero, .. insisto . debes ver el valor que toma tu $textfile o $_FILES ..... para ver si llega tu archivo al servidor (donde PHP lo deja temporalmente hasta que decidas que hacer con el ...).

Un saludo,
  #22 (permalink)  
Antiguo 26/07/2004, 16:26
 
Fecha de Ingreso: octubre-2003
Mensajes: 21
Antigüedad: 14 años, 1 mes
Puntos: 0
probar y probar :)

Despues de probar muchas veces descubrí gracias al phpmyadmin que cuando quieres encontrar un path en un servidor en windows (que es mi caso) debes incluir la sentencia de la siguiente manera.

$sql = 'LOAD DATA LOCAL INFILE \'C:\\\\apache\\\\htdocs\\\\archivos\\\\prueba1s.c sv\' INTO TABLE `archivo` FIELDS TERMINATED BY \',\' ENCLOSED BY \'"\' ESCAPED BY \'\\\\\' LINES TERMINATED BY \'\\r\\n\'';

porque???....no sé pero cuando le pedí al phpmyadmin que me diera el script de php para hacer está operación me dio esto.....lo probé y funciona!!!!!!!!!!!!!!!!!

Gracias a Cluster por la ayuda prestada....espero que esto les sirva :)
  #23 (permalink)  
Antiguo 28/07/2004, 15:19
 
Fecha de Ingreso: julio-2004
Mensajes: 45
Antigüedad: 13 años, 4 meses
Puntos: 0
Hola, he leido el post y tengo varias inquietudes, no me da error, pero tampoco me carga la información, estoy empezando en esto del PHP y la verdad no solo quiero sino que necesito aprenderlo a fondo.

He utilizado el script de php y pues no me da error con la db inclusive corre perfecto, pero no me muestra la tabla con los datos porque no los carga, me pueden decir a que se debe, gracias
  #24 (permalink)  
Antiguo 28/07/2004, 15:26
 
Fecha de Ingreso: octubre-2003
Mensajes: 21
Antigüedad: 14 años, 1 mes
Puntos: 0
te lo haré facil :)

script para enviar el archivo al servidor


Código HTML:
<form action="procesar_archivo.php" method="post" enctype="multipart/form-data">
    <table cellpadding="5" border="2" align="center">
    <tr><td colspan="2">Customer Name : <input type="text" name="customer_name" /></td></tr>
    <tr>
         <td colspan="2"><input type="file" name="textfile" /></td></tr>
        <tr><td align=center><input type="submit" name="btnLDI" value="Enviar" /></td> 
</table>

script para procesar el archivo enviado

Código PHP:
$destino='C:\\\\apache\\\\htdocs\\\\prices\\\\definitivo\\\\archivos\\\\temporal.csv';
copy($textfile$destino);
$sql 'LOAD DATA LOCAL INFILE \'C:\\\\apache\\\\htdocs\\\\prices\\\\definitivo\\\\archivos\\\\temporal.csv\' INTO TABLE `archivo` FIELDS TERMINATED BY \',\' ENCLOSED BY \'"\' ESCAPED BY \'\\\\\' LINES TERMINATED BY \'\\r\\n\''
  #25 (permalink)  
Antiguo 30/07/2004, 18:37
 
Fecha de Ingreso: julio-2004
Mensajes: 1
Antigüedad: 13 años, 4 meses
Puntos: 0
Excel a MySql

Hola:

Es la primera vez que le escribo al foro. Les comento que pude crear un programa que inserta datos de un csv en una db de mysql.
El csv viene de un excel, que fue creado sin la intervencion de la db mysql.
Es decir, lo cargaron a mano.
Intervienen tres tablas distintas de la misma db.
Pero es muy extenso. Utilice fgetcsv()

Me gustaria que alguno de ustedes me dijera si hay alguna forma de leer los nombres de los campos del excel con php, para pasarlos a csv. O al menos a un array y la forma en que tendria que hacerle el query

Esto me permitiria crear un nuevo programa, mas compacto y que me sirva para cualquier archivo excel, para cualquier db mysql.
El programa: Leeria los nombres de los campos de alguna forma.
Los consultaria a todas las tablas de la db mysql, cualquiera sea
Y armaria una rutina automatizada de creacion del archivo csv y de insercion de datos en las tablas correspondientes.

Muchas gracias a todos !!!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 09:31.