Foros del Web » Programando para Internet » PHP »

Insertar CSV en base datos

Estas en el tema de Insertar CSV en base datos en el foro de PHP en Foros del Web. Hola, estoy gestionando una base de datos con PhpMyAdmin 3.x y necesito importar un CSV, pues en ese archivo están almacenados una gran cantidad de ...
  #1 (permalink)  
Antiguo 30/04/2009, 11:25
Avatar de Daam  
Fecha de Ingreso: octubre-2007
Ubicación: Planeta Tierra
Mensajes: 152
Antigüedad: 16 años, 6 meses
Puntos: 0
Pregunta Insertar CSV en base datos

Hola, estoy gestionando una base de datos con PhpMyAdmin 3.x y necesito importar un CSV, pues en ese archivo están almacenados una gran cantidad de correos electrónicos y datos de usuarios que necesito migrar a la base de datos.

El archivo CSV tiene más de 5000 entradas y además contiene 5 columnas:
  • categorias
  • email
  • name
  • username
  • password (todos tienen el mismo password)

El archivo es producto de la exportación de la lista de contactos de una cuenta de correo Yahoo.com. Posteriormente lo edité con CSVed, para dejar solamente los columnas y datos que necesitaba, pues originalmente ese CSV trae más de 50 columnas.

Necesito importar ese archivo en una base de datos que tiene las mismas columnas que el CSV.

He intentado lo siguiente:
  • Utilizar el gestor de importación de PhpMyAdmin, permutando todas las opciones posibles, pero nada...
  • He inyectado una sentencia sql a través de un php

    Código PHP:
    <?php
    function Conectarse()
    {
           if (!(
    $link=mysql_connect("localhost","root",""))) //estoy usando un servidor de prueba (WAMP)  {
               
    echo "Error conectando a la base de datos.";
               exit();
           }
            if (!
    mysql_select_db("usuarios",$link)) {
                echo 
    "Error seleccionando la base de datos.";
               exit();
           }
           return 
    $link;
    }

    $row 1;
    $handle fopen("datos.csv""r");
    while ((
    $data fgetcsv($handle5500",")) !== FALSE) {
        
    $num count($data);
        
    $row++;
        
    $cadena "insert into joomla(categorias,email,name,username,password) values(";
        for (
    $c=0$c $num$c++) {
            if (
    $c==($num-1))
                  
    $cadena $cadena."'".$data[$c] . "'";
            else
                  
    $cadena $cadena."'".$data[$c] . "',";
        }

        
    $cadena $cadena.");";
        echo 
    $cadena."<br>";

         
    $enlace=Conectarse();
         
    $result=mysql_query($cadena$enlace);
         
    mysql_close($enlace);
    }

    fclose($handle);

    ?>

¿Qué puedo hacer?


Espero su ayuda :).
__________________
"Si apuntas hacia las estrellas, puede ser que no alcances alguna, pero no terminarás con las manos llenas de lodo."
  #2 (permalink)  
Antiguo 30/04/2009, 12:19
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Insertar CSV en base datos

¿y cual es el problema??

osea, el código se ve correcto... ¿te sale algún error?? ¿no pasa nada??

NOTA que no es óptimo conectar cada ves que insertas, deberías conectar solo una ves antes del while() ya que dentro de el estas conectando varias veces.... 5000 veces, para ser exacto!!

otra, es ¿porque no depuras los errores??

Código PHP:
$result=mysql_query($cadena$enlace) or die(mysql_error()); 
¿o se tarda??

echo $cadena; ¿que imprime?? ¿¿es SQL valido??


¿?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 30/04/2009, 14:00
Avatar de Daam  
Fecha de Ingreso: octubre-2007
Ubicación: Planeta Tierra
Mensajes: 152
Antigüedad: 16 años, 6 meses
Puntos: 0
Pregunta Respuesta: Insertar CSV en base datos

Al abrir el archivo sql.php, se tarda bastante y luego me muestra una página html con lo siguiente.

Código PHP:
...
insert into joomla(categorias,email,name,username,passwordvalues('PLC34','[email protected]','[email protected]','[email protected]','provicional123');
insert into joomla(categorias,email,name,username,passwordvalues('PLC21','[email protected]','[email protected]','[email protected]','provicional123');
insert into joomla(categorias,email,name,username,passwordvalues('PLC40','[email protected]','[email protected]','[email protected]','provicional123');
insert into joomla(categorias,email,name,username,passwordvalues('PLC34,Personales','[email protected]','[email protected]','[email protected]','provicional123');
insert into joomla(categorias,email,name,username,passwordvalues('Personales','[email protected]','[email protected]','[email protected]','provicional123');
... 
* Cambié los datos por motivos de seguridad.

No entiendo lo que me dices que haga con el while().
__________________
"Si apuntas hacia las estrellas, puede ser que no alcances alguna, pero no terminarás con las manos llenas de lodo."
  #4 (permalink)  
Antiguo 01/05/2009, 09:00
Avatar de Daam  
Fecha de Ingreso: octubre-2007
Ubicación: Planeta Tierra
Mensajes: 152
Antigüedad: 16 años, 6 meses
Puntos: 0
Respuesta: Insertar CSV en base datos

¿Qué hago?
__________________
"Si apuntas hacia las estrellas, puede ser que no alcances alguna, pero no terminarás con las manos llenas de lodo."
  #5 (permalink)  
Antiguo 01/05/2009, 10:41
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Insertar CSV en base datos

¿¿que sucede ahora??

yo a lo que me refería es que conectas/desconectas dentro del while() ¿cierto??

esto quiere decir que si tienes 5000 resultados, conectas/desconectas 5000 veces!!

¿¿te parece óptimo?? ¿¿o de veras no me entiendes??

__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 01/05/2009, 11:11
Avatar de Daam  
Fecha de Ingreso: octubre-2007
Ubicación: Planeta Tierra
Mensajes: 152
Antigüedad: 16 años, 6 meses
Puntos: 0
Respuesta: Insertar CSV en base datos

El script que usé lo conseguí en un website, no sé mucho de PHP. No entiendo lo que me dices.
__________________
"Si apuntas hacia las estrellas, puede ser que no alcances alguna, pero no terminarás con las manos llenas de lodo."
  #7 (permalink)  
Antiguo 01/05/2009, 11:15
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Insertar CSV en base datos

pues vaya lío eh....

¿¿como pretendes recibir ayuda si no comprendes lo que decimos??

al menos, no creo que alguien te corrija el código...


si tu no te ayudas, no podemos hacer mucho.... suerte!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
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 10:32.