Foros del Web » Programando para Internet » PHP »

Import CSV a Mysql

Estas en el tema de Import CSV a Mysql en el foro de PHP en Foros del Web. Buenas tardes, Revisando por el foro he visto varios post que mas o menos se adecuan a mis necesidades , entonces he recogido ideas de ...
  #1 (permalink)  
Antiguo 20/09/2012, 08:23
 
Fecha de Ingreso: abril-2012
Mensajes: 28
Antigüedad: 12 años
Puntos: 0
Import CSV a Mysql

Buenas tardes,

Revisando por el foro he visto varios post que mas o menos se adecuan a mis necesidades , entonces he recogido ideas de todos y aqui expongo mi script y mis dudas ya que son muchas

Priemro el script:

Código PHP:
<?php 
 $uploaddir 
"uploads/";
 
$uploadfile $uploaddir basename($_FILES['archivo']['name']);
 
$error $_FILES['archivo']['error'];
 
$subido false;
 if(isset(
$_POST['boton']) && $error==UPLOAD_ERR_OK) { 
   
$subido copy($_FILES['archivo']['tmp_name'], $uploadfile); 
  } 
   if(
$subido) { 
    echo 
"El archivo subio con exito"
   } else {
    echo 
"Se ha producido un error: ".$error;
  }

include(
'connect-db.php');
print 
" <br>";
$resultnum mysql_query('SELECT MAX(IDENTIFICADOR)FROM gestionip;');
print 
" <br>";
$maximo mysql_result($resultnum0);

print 
" <br>";

$row $maximo;

$fp fopen ($uploadfile,"r");
while (
$data fgetcsv ($fp1000";"))
{
$num count ($data);
print 
" <br>";
$row++;

$insertar="INSERT INTO gestionip (identificador,ip,nombre,desc,tipo,sede,nomsede,ultimomod,ultimamod) VALUES ('" $row "','$data[0]','$data[1]','$data[2]','$data[3]','$data[4]','$data[5]','$data[6]','$data[7]');";
$result=mysql_query($insertar);

echo 
"$insertar";
}
fclose ($fp);
?>
Este Script lo que hace es la primera parte subir un fichero al servidor y la parte de abajo teoricamente hace un insert en al BBDD de todos los registros del csv que hemos subido en el Mysql.

Priemro de todos , no consigo introducir datos en la BBDD , si ejecuto la subida me aparece por pantalla el insert con los datos del csv y aparentemente esta bien pero no lo integra en la BBDD. Tambien comentar que ejecuto el insert que me da como resultado via Navicat y no consigo que funcione. Si veis algo raro en el insert comentarmelo porfavor.

Tambien comentar que mi verdadero objetivo es subir un csv y que los datos de ese csv se metan al final de la BBDD osea que no escriba nada al principio de la BBDD por ello hago un max para saber cual es el ultimo identificador , eso no se si esta bien hecho . Pero no logro entender como ir a la ultima posicion de la BBDD y en ese momento escribir.

El campo identificador de la BBDD es un autoincremento , eso no se tiene algo que ver.

Espero que me puedan ayudar ya que llevo 2 dias dedicandome a esto y no consigo ver que estoy haciendo mal.

Gracias por adelantado
Saludos
  #2 (permalink)  
Antiguo 20/09/2012, 08:43
Avatar de cuasatar  
Fecha de Ingreso: junio-2011
Ubicación: Bogotá Rock City
Mensajes: 1.230
Antigüedad: 12 años, 10 meses
Puntos: 181
Respuesta: Import CSV a Mysql

Bueno, lo he revisado muy rápido y en teoría parece que esta bien lo que se refiere a lógica no he usado la función fgetcsv asi que no podria saber si la estas usando bien o no. Simplemente para anotar.

1. Deberias empezar a migrar a mysqli para evitar que tu funciones queden obsoletas (yo ya he empezado a migrar y es facil).
2. Cuando haces el query no le estas colocando el enlace de conexión de base de datos, mira los ejemplos del manual de PHP.

http://www.php.net/manual/es/function.mysql-query.php

http://www.w3schools.com/PHP/php_mysql_select.asp

3. Verifica que existe la conexión a la base de datos e imprime las consultas para verificar que estan bien escritas.
__________________
Blog de humor http://elcuasatar.net63.net/
  #3 (permalink)  
Antiguo 20/09/2012, 08:59
 
Fecha de Ingreso: abril-2012
Mensajes: 28
Antigüedad: 12 años
Puntos: 0
Respuesta: Import CSV a Mysql

Merci cuasatar , pero como ya dije imprimo la query y el resutado es este:

INSERT INTO gestionip (identificador,ip,nombre,desc,tipo,sede,nomsede,ul timomod,ultimamod) VALUES ('149400','10.150.131.14','christian','romero','vm ware','vm','CPD 22@ - VMware','default','16/07/2012 12:01');.

Y teoricamente tambien tengo conectividad ya que hago el include y saco el MAX asi que conectividad entiendo qeu tengo.
  #4 (permalink)  
Antiguo 20/09/2012, 09:59
Avatar de cuasatar  
Fecha de Ingreso: junio-2011
Ubicación: Bogotá Rock City
Mensajes: 1.230
Antigüedad: 12 años, 10 meses
Puntos: 181
Respuesta: Import CSV a Mysql

Cita:
Y teoricamente tambien tengo conectividad ya que hago el include y saco el MAX asi que conectividad entiendo qeu tengo.
La teoría no es suficiente. Aunque muchas personas hacen el query solo incluyendo el include de la conexión por experiencia propia toca hacerlo explicitamente dentro de la función con el link identifier. Esto es lo que dice el manual al respecto.

Cita:

mysql_query Parameters
query
An SQL query

The query string should not end with a semicolon. Data inside the query should be properly escaped.

link_identifier
The MySQL connection. If the link identifier is not specified, the last link opened by mysql_connect() is assumed. If no such link is found, it will try to create one as if mysql_connect() was called with no arguments. If no connection is found or established, an E_WARNING level error is generated.
Código PHP:
include(my_sql_connection.php);
$result mysql_query($query);//esto en teoria deberia funcionar
$result mysql_query($query,$link);//por experiencia propia esta es la que me funciona a mi siempre. 
Habilitale el mysql_error para saber que errores te genera la inserción de datos.
__________________
Blog de humor http://elcuasatar.net63.net/
  #5 (permalink)  
Antiguo 20/09/2012, 19:58
Avatar de anacona16  
Fecha de Ingreso: marzo-2010
Ubicación: Bogota DC
Mensajes: 610
Antigüedad: 14 años, 1 mes
Puntos: 52
Respuesta: Import CSV a Mysql

El tema de importar directamente a tu BD es un tema complicado lo mas facil es un CVS pero lo mejor es utilizar PHPExcel para leer el contenido del Excel y luego guardarlo, aqui hay un aporte completo que te hace eso, ya seria personalizarlo. http://objetivophp.com/?p=146
__________________
Aprendiendo!!!

Etiquetas: csv, import, mysql, registro, sql
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




La zona horaria es GMT -6. Ahora son las 22:01.