Foros del Web » Programando para Internet » PHP »

duda en importar datos de un archivo a mysql

Estas en el tema de duda en importar datos de un archivo a mysql en el foro de PHP en Foros del Web. hola a todos es que tengo un archivo user.csv donde tengo una informacion para introducir a mysql pero no tengo idea de como poder hacerlo ...
  #1 (permalink)  
Antiguo 15/05/2013, 15:42
 
Fecha de Ingreso: junio-2012
Ubicación: En el Mundo
Mensajes: 759
Antigüedad: 11 años, 10 meses
Puntos: 10
duda en importar datos de un archivo a mysql

hola a todos es que tengo un archivo user.csv donde tengo una informacion para introducir a mysql pero no tengo idea de como poder hacerlo

este es el contenido del achivo

user.csv
Código csv:
Ver original
  1. // user : password : fecha expira : estatus ; creador
  2. 51:65362:2014-07-11:1 ;admin
  3. 52:65314:2014-07-11:1 ;admin
  4. 53:61315:2014-07-11:0 ;admin
  5. 54:64123:2014-07-11:1 ;admin

como puedo hacer esto posible
  #2 (permalink)  
Antiguo 15/05/2013, 16:15
 
Fecha de Ingreso: abril-2011
Mensajes: 31
Antigüedad: 13 años
Puntos: 2
Respuesta: duda en importar datos de un archivo a mysql

Para esas extenciones se usan unas funciones de php, hace tiempo trabaje con eso, aqui te dejo un ejemplo para que te guies....

Código PHP:
Ver original
  1. <?php
  2.  
  3. /* Código que lee un archivo .csv con datos, para luego insertarse en una base de datos, vía MySQL
  4. *  Gracias a JoG
  5. *  http://gualinx.wordpress.com
  6. */  
  7.  
  8. function Conectarse() //Función para conectarse a la BD
  9. {
  10.        if (!($link=mysql_connect("localhost","miusuario","mipassword")))  { //Cambia estos datos
  11.            echo "Error conectando a la base de datos.";
  12.            exit();
  13.        }
  14.         if (!mysql_select_db("mibd",$link)) {
  15.             echo "Error seleccionando la base de datos.";
  16.            exit();
  17.        }
  18.        return $link;
  19. }
  20.  
  21. $row = 1;
  22. $handle = fopen("datos.csv", "r"); //Coloca el nombre de tu archivo .csv que contiene los datos
  23. while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { //Lee toda una linea completa, e ingresa los datos en el array 'data'
  24.     $num = count($data); //Cuenta cuantos campos contiene la linea (el array 'data')
  25.     $row++;
  26.     $cadena = "insert into miTabla(Campo1,Campo2,Campo3,Campo4) values("; //Cambia los valores 'CampoX' por el nombre de tus campos de tu tabla y colócales los necesarios
  27.     for ($c=0; $c < $num; $c++) { //Aquí va colocando los campos en la cadena, si aun no es el último campo, le agrega la coma (,) para separar los datos
  28.         if ($c==($num-1))
  29.               $cadena = $cadena."'".$data[$c] . "'";
  30.         else
  31.               $cadena = $cadena."'".$data[$c] . "',";
  32.     }
  33.  
  34.     $cadena = $cadena.");"; //Termina de armar la cadena para poder ser ejecutada
  35.     echo $cadena."<br>";  //Muestra la cadena para ejecutarse
  36.  
  37.      $enlace=Conectarse();
  38.      $result=mysql_query($cadena, $enlace); //Aquí está la clave, se ejecuta con MySQL la cadena del insert formada
  39.      mysql_close($enlace);
  40. }
  41.  
  42. fclose($handle);
  43.  
  44. ?>
  45. <h2>Se insertaron <?php echo $row ?> Registros en la tabla miTabla</h2>
  46.  
  47. ?>

Hay que tomar muy encuenta varios aspectos:

Revisar bien la sintaxis del archivo .csv, ya que si éste contiene apóstrofos (‘) o comillas dobles (“) podrían ocasionar problemas.
Nombre de la ruta y del nombre del archivo .csv
Nombre de la tabla y de los campos
Si al ejecutar la página aparece el código SQL, con el mensaje, “Se insertaron X registros en la tabla MiTabla” y te vas a tu BD y no hay nada, intenta lo siguiente:
Copia una línea que te devolvió la página (del tipo “insert into MiTabla… “) y pégala en la consola de SQL, ejecútala y allí te darás cuenta del error SQL posible.

hay miles maneras de hacerlo, esta es la que use yo.......

Etiquetas: mysql
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 11:26.