> Faqs > Convertir el contenido de una tabla MySQL a CSV

Convertir el contenido de una tabla MySQL a CSV

Necesito convertir el contenido de una tabla MySQL, registro a registro, en un archivo se texto en formato CSV.

¿Cuál seria la manera de proceder?

Respuestas

Como dice Mauro, puedes usar la función fputcsv() que existe en PHP desde PHP 5. Te paso un ejemplo sencillo de código que podrías usar para exportar los datos desde una tabla MySQL a un archivo CSV usando PHP, de la manera más genérica posible, aunque ya tú lo tendrás que peronalizar para adaptarlo a lo que necesites.

Primero, necesitarás y luego ejecutar una consulta para obtener los datos que quieras exportar. Finalmente, puedes escribir esos datos en un archivo CSV.

<?php

// Vamos a establecer una conexión con tu base de datos

$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "mydb";

// Creamos la conexión con mysqli

$conn = new mysqli($servername, $username, $password, $dbname);

// Verificamos la conexión
if ($conn->connect_error) {
    die("Uppps... hubo un error al crear la conexión: " . $conn->connect_error);
}

// Seleccionar la tabla
$query = "SELECT * FROM tabla_que_deseas_exportar_a_CSV";
$result = $conn->query($query);

if ($result->num_rows > 0) {
    
    // Crear archivo CSV

    $filename = "export.csv";
    $file = fopen($filename, "w");
    
    // Obtener los nombres de las columnas
    
    $columns = array();
    $row = $result->fetch_assoc();
    foreach ($row as $key => $value) {
        $columns[] = $key;
    }

    // Escribimos los nombres de las columnas en CSV
    
    fputcsv($file, $columns);

    // Escribimos la primera fila en CSV
    
    fputcsv($file, $row);

    // Escribimos las filas restantes en el archivo CSV
    
    while ($row = $result->fetch_assoc()) {
        fputcsv($file, $row);
    }
    
    // Cerramos el fichero
    fclose($file);

    echo "Exportación completada!";    
    
} else {
    
    echo "Esta tabla no tiene datos, por lo que no se ha exportado nada";

    
}

// Cerramos la conexión con la base de datos

$conn->close();

?>

Tendrás que modificar las variables $servername, $username, $password, $dbname, para que se adapten a tu servidor de MySQL. Además en el select hay un nombre de tabla que tendrás que cambiar al que sea adecuado para conseguir el volcado a CSV de la tabla que necesites exportar.

Ten en cuenta que el archivo export.csv se creará en la misma carpeta donde se encuentra el script PHP.

Alfonso
289 11 19 16

Hola, Yo me he enfrentado hace poco al mismo problema y si el archivo està en formato sql lo importo a una base de datos nueva con el phpMyAdmin de mi localhost. Una vez importado puedes exportalo a distintos formatos, entre ellos CSV, csv para excel, word, pdf, etc. A mi me resultó sencillo, rápido y con buen resultado.

Jorge
5 1
Buen tip Jorge!

Hola:

Una forma sería seleccionar todos los registros de la tabla, recorrer el resultado y usar la función fputcsv para cada uno.

Otra forma es hacerlo directamente desde MySQL con mysqldump.

¿Tenés algo de código que puedas mostrar a ver en qué te estás trabando?

Mauro Chojrin
30 1 4
Gracias Mauro por tomarte el tiempo de responder!!

Yo uso esta librería cuando tengo que volcar a Excel: PHPSpreadsheet.

Es una librería un tanto compleja, porque tiene muchas cosas que quizás un caso como el tuyo, que simplemente necesitas volcar los datos a un CSV no necesites, pero la verdad es que viene muy bien y además te servirá si tienes que hacer un archivo .xlsx.

Si tienes tiempo creo que la inversión de aprender a usarla te vendrá bien ahora y en cualquier proyecto donde necesites exportar datos.

Miguel Angel
3115 139 207 17