Insertando registros CSV a MySQL con PHP

Un Script, quizás algo rudimetario pero efectivo y útil como punto de partida para insertar los datos contenidos en un archivo CSV.

//Tabla Usuarios
//Campos => nombre, apellidos, delegacion, email//Conexión con las DB.
$cnx = conexion ();

ini_set (‘auto_detect_line_endings’,’1′);

$fp = fopen («NuestroCSV.csv», «r»);

while ($data = fgetcsv ($fp, 1000, «;»)){

$insertar=»INSERT INTO usuarios (nombre,apellidos,delegacion,email)
VALUES (‘».$data[0].»‘,'».$data[1].»‘,'».$data[2].»‘,'».$data[3].»‘)»;

mysql_query($insertar, $cnx);

}

fclose($fp);

Observad como, en la línea 7 habilitamos la opción auto_detect__line_endings para prevenir los problemas que PHP puede tener al reconocer los finales de línea cuando lee archivos creados en un Macintosh. Cuando está habilitada, examina los datos leidos por medio por ejemplo de fgets(), para ver si está usando convenciones de final de línea tipo Unix, MSDos o Macintosh.

Esta opción está afectada por los valores definidos en el archivo php.ini, y su valor por defecto es de 0 (FALSE). Tornaremos su valor a 1 por medio de la función ini_set().

7 Responses to Insertando registros CSV a MySQL con PHP

  1. jose miguel dice:

    hola necesito saver por favor como se importan datos de una base de datos mysql a un archivo csv por favor.

    gracias.

  2. maurobernal dice:

    Justo lo que andaba buscando. Vamos a probarlo.

  3. daz dice:

    gracias por la ayuda!

  4. EXCELENTE TUTORIAL. Gracias. Habia estado buscando una solución a este problema desde hace mucho tiempo. Gracias!

  5. william dice:

    Amigos dejo mi aporte para que crezca el conocimiento. Mejore este programa con el formulario para subir el archivo csv y la conexion con la bd

    —-archivo .php —

    nombre, apellidos, delegacion, email//Conexión con las DB.
    if (isset($_POST[‘submit’])) {
    $dbhost = «localhost»; // HOST DONDE SE ENCUENTRA LA BASE DE DATOS
    $dbuser = «root»; // USUARIO PROPIETARIO DE LA BASE DE DATOS
    $dbpass = «»; // CONTRASEÑA DEL USUARIO PROPIETARIO DE LA BASE DE DATOS
    $dbname = «usuaruios»; // NOMBRE DE LA BASE DE DATOS
    $tabla=»usuarios»; // INDICAR NOMBRE DE LA TABLA

    $cnx = mysql_connect ($dbhost, $dbuser, $dbpass);
    mysql_select_db($dbname);

    ini_set (‘auto_detect_line_endings’,’1′);

    $fp = fopen ($_FILES[‘archivo’][‘tmp_name’], «r»);

    while ($data = fgetcsv($fp, 1000, «,»))
    {
    $insertar=»INSERT INTO usuarios (nombre,apellidos,delegacion,email) VALUES (‘$data[0]’, ‘$data[1]’, ‘$data[2]’, ‘$data[3]’)»;

    mysql_query($insertar, $cnx);

    }

    fclose($fp);
    }
    ?>

    –archivo csv–
    nombre, apellidos, delegacion, email
    nombre, apellidos, delegacion, email

  6. Erick Lg dice:

    hola, amigos espero ke me puedan ayudar, el código funciona excelente para las 3 primeras columnas del CSV pero las demás, es como si no existieran,
    lo ke preciso es capturar cada linea del csv por separado, para asi poder asignarle una variable, por ejemplo en la linea nombre ke sea $nombre = (linea 3), $ci=(linea8).
    si me pueden ayudar, seria muy bueno, muchas gracias

Deja un comentario