PHP-Hispano.net Comunidad hispana de desarrollo web

Contacto | #php_para_torpes | Enlázanos | ¿Quiénes somos?

12 usuarios Online (0)

Darse de alta en la web | Recuperar password   
Inicio / Foros / PHP / importar csv a mysql

importar csv a mysql

3 respuestas 17312 visitas Categoría PHP

importar csv a mysql

Avatar de shilensis

Nivel 1 (4 posts)

* * * * * * *

0 Agradecimientos

#0 Offline shilensis 20 abr 07
Wenas, wenas, camaradas de foro; esta es mi primer posteo; y pa variar traigo un problemilla. necesito importar datos desde un csv y que se carguen en mi bd. Esto lo hago a través de un input tipo file de un formulario que busca el archivo csv, para luego recoger los datos contenidos en él e insertarlos en mi bd a través de Load Data Local Infile. Suena bonito, pero sólo me funciona en mi servidor de prueba local (IIS), al subirlo a un host sólo aparece el form y al enviar la información se recarga el form pero no envia nada de nada. Necesito vuestra ayuda porfa. Trabajo con el PHP 4.3 y Mysql 5.0 (Desde PhpMyAdmin se puede hacer, pero quienes deben importar los csv desean algo simple y rápido). Acá les adjunto el código con el cual estoy trabajando. De antemanos muchisimas gracias.

//
<?php
include(\'connect.php\');
mysql_connect($servidor, $usuario, $password) or die(mysql_error());
mysql_select_db($database);
//la siguiente linea solo crea la tabla si no existe
include(\'nueva_tabla.php\');
/*
comienza la lectura de archivo
para simplificar, solo utilizaremos como valor variable el nombre del fichero
y asumiremos:
-campos separados por punto y coma
-las lineas terminan con salto de linea
-debe ignorar la primera linea del fichero
-hemos definido los 3 campos
*/
if (isset($archivo)) {
$query = \"LOAD DATA LOCAL INFILE \'\".$archivo.\"\' REPLACE INTO TABLE tabla FIELDS TERMINATED BY \';\' LINES TERMINATED BY \'\\r\\n\' IGNORE 1 LINES (id,nombre,edad)\";
mysql_query($query) or die(mysql_error());
}
//terminado!!!
?>
<html>
<head>
<title>Cargar Datos</title>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\">
</head>

<body>
<form action=\"\" method=\"post\" enctype=\"multipart/form-data\">
<input name=\"archivo\" type=\"file\" id=\"archivo\">
<input type=\"submit\" name=\"cargar datos\" value=\"Submit\">
</form>
<?php if (isset($archivo)) {?>

<p>
<a href=\"tabla_result.php\">Ver resultado</a></p>
<?php } ?>

Re: importar csv a mysql

Avatar de pquesada

Nivel 2 (80 posts)

* * * * * * *

3 Agradecimientos

#1 Offline pquesada 21 abr 07 0 personas consideran útil este post.
Hola, tal vez sea un problema con Register Globals

prueba de esta manera:

<?php
if (isset($_POST[submit])) {
// no estaria de mas comprobar primero si el archivo se ha subido completamente con move_uploaded_file();
    
$query "LOAD DATA LOCAL INFILE {$_FILES[archivo][tmp_name]} REPLACE INTO TABLE tabla FIELDS TERMINATED BY \';\' LINES TERMINATED BY \'\\r\\n\' IGNORE 1 LINES (id,nombre,edad)\";



Fijate la manera de acceder al archivo, tu codigo podria verse comprometido accediendo de la siguiente manera:
http://tudominio.com/script.php?archivo=/home/user/unarchivo.csv

Espero que te ayude.

Un saludo y suerte!

Re: importar csv a mysql

Avatar de shilensis

Nivel 1 (4 posts)

* * * * * * *

0 Agradecimientos

#2 Offline shilensis 30 abr 07 0 personas consideran útil este post.
Gracias pquesada, pues si que funciona con los cambios al código que me indicaste, pero la sgte sintaxis la tuve que cambiar:

{$_FILES[\'archivo\'][\'tmp_name\']}

por:

\'\".$_FILES[\'archivo\'][\'tmp_name\'].\"\'

Así me funcionó, pero me dejó de mostrar la etiqueta <a href..., y no encuentro como mostrar los resultados de la carga de registros desde el cvs. Weno seguiré buscando, gracias por tu ayuda.

Re: importar csv a mysql

Avatar de pacognovel

Nivel 1 (2 posts)

* * * * * * *

0 Agradecimientos

#3 Offline pacognovel 20 jun 08 0 personas consideran útil este post.
hola estoy tratando de impotar un csv utilizando este código:

<?php
require_once(\'load_data_conn.php\');
mysql_connect($servidor, $usuario, $password) or die(\"Could not connect: \" . mysql_error());
mysql_select_db($database);
//la siguiente linea solo crea la tabla si no existe
//solamente para simplificar los preparativos del ejemplo 8-)
include(\'load_data_table.php\');
/*
comienza la lectura de archivo
para simplificar, solo utilizaremos como valor vartiable el nombre del fichero
y asumiremos:
-campos separados por punto y coma
-las lineas terminan con salto de linea
-debe ignorar la primera linea del fichero
-hemos definido los 3 campos, pero en este caso no habria sido necesario
*/
if (isset($_POST[\'submit\'])) {
$query = \"LOAD DATA LOCAL INFILE \".$_FILES[\'archivo\'][\'tmp_name\'].\" REPLACE INTO TABLE esmmug_load_data FIELDS TERMINATED BY \',\' LINES TERMINATED BY \'\\r\\n\' IGNORE 1 LINES (id,nombre,edad)\";
mysql_query($query) or die(\"error:\".mysql_error());
}
//terminado!!!
?>
<html>
<head>
<title>Ejemplo LOAD DATA INFILE</title>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\">
</head>

<body>
<form action=\"\" method=\"post\" enctype=\"multipart/form-data\" name=\"form1\">
<input name=\"archivo\" type=\"file\" id=\"archivo\">
<input type=\"submit\" name=\"submit\" value=\"submit\">
</form>
<?php if (isset($archivo)) {?>

<p>
<a href=\"/load/load_data_result.php\">Ver resultado</a></p>
<?php } ?>
<p>
Este es un ejemplo de LOAD DATA INFILE.
</p>
<p>
Para simplificar el ejemplo, damos por asumido que los datos est&aacute;n separados
por punto y coma y cada linea representa un registro
</p>
<p>
En el archivo CSV tenemos una linea de encabezado, que eliminamos con IGNORE
1 LINES
</p>
<p>
Observa que solo necesitamos 2 lineas de codigo: definimos la consulta y la ejecutamos.
No hace falta codigo para subir el fichero!
</p>
</body>
</html>

pero no me carga nada en la base de datos, me podrian ayudar, gracias

Responder mensaje

Para poder participar debes ser un usuario registrado de PHP-Hispano. :: Deseo darme de alta en esta comunidad ::
Login / Password   

Temas relacionados

E Titulo Respuestas Última resp. Creado el Visitas Foro
Pregunta Pregunta sobre MySql dump 2 01 abr 03
por Dave
dom, 30 mar 03 (13:49)
por Dave
1024 PHP
Pregunta Importar datos desde EXCEL 10 19 dic 07
por victorm07
dom, 19 jun 05 (23:14)
por Boro
9792 PHP
Pregunta Ayuda con translado de datos de Mysql a PHP 3 13 nov 05
por NoSetup.org
mié, 09 nov 05 (00:17)
por kroys
1147 PHP
Pregunta insertar contenido fichero txt en un campo 6 05 mar 06
por solozzo
mar, 14 feb 06 (19:01)
por solozzo
5426 MySQL
Pregunta Importar mails a mysql, Como hago? 0 - - - - - - -
vie, 05 may 06 (16:11)
por ventatec
434 PHP

php-hispano.net 2002 - 2013 | XHTML 1.0
Datos Legales | Webmaster