Saltar al contenido
Codif铆ca.me | Desarrollo web | Programaci贸n
Php

C贸mo importar datos csv o txt a MySQL con Php

3 mayo, 2016

En esta entrada rescato el c贸digo para importa un fichero CSV o TXT a tu base de datos mysql desde una formulario dentro de tu p谩gina web.

Basicamente el funcionamiento que queremos ser铆a as铆, ponemos un formulario en la p谩gina web desde el que seleccionaremos un TXT o CSV y lo importaremos a nuestra base de datos.

Esta imagen muestra como ser铆a esa parte del formulario.

importar ficheros CSV TXT mysql

Este ser铆a el c贸digo para subir el CSV o TXT , en este caso vamos a subir a importar unas 1000 filas de una sola columna.

<form enctype='multipart/form-data' action='/desarrollo/wsld/subir.php' method='post' id="form-id-subir" >
Selecciona el fichero a importar:<br />
<input size='50' type='file' name='filename'><br />
 
  <input type="hidden" name="subir" value="admin1">
  <br />
   <a id="descargarA" onclick="$('#form-id-subir').submit();" class="button">Subir CSV / TXT </a>
</form>
 
<script>
var form = document.getElementById("form-id-subir");
document.getElementById("descargarA").addEventListener("click", function () {
  form.submit();
});
</script>

Este ser铆a el c贸digo PHP al que tu formulario llamar谩 y al que enviar谩 los datos que hay en el fichero txt.
El TXT del ejemplo tendr谩 unas 1000 filas y una sola columna. Para a帽adir columnas utiliza el Array $data[0], $data[1] , … .

function subir(){
   $file_type = $_FILES['file']['type'];
 
        $servername = "localhost";
        $username = "-----";
        $password = "-----";
        $database = "-----";
 
        // Create connection
        if (!$conn = mysql_connect($servername,$username,$password)) {
            echo 'No pudo conectarse a mysql';
            exit;
        }
 
        if (!mysql_select_db($database, $conn)) {
            echo 'No pudo seleccionar la base de datos';
            exit;
        }    
 
//Upload File
 
if (isset($_POST['subir'])) {
    if (is_uploaded_file($_FILES['filename']['tmp_name'])) {
        echo "<h1>" . "File ". $_FILES['filename']['name'] ." subido." . "</h1>";
        echo "<h2>Datos subidos:</h2>";
        readfile($_FILES['filename']['tmp_name']);
    }
 
    //Import uploaded file to Database
    $handle = fopen($_FILES['filename']['tmp_name'], "r");
 
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        $import="insert into Tabla_1 (campo_1) values ('".$data[0]."')";
 
        mysql_query($import) or die(mysql_error());
    }
 
    fclose($handle);
 
    print "Import hecho!";
 
    //view upload form
}
 
}

Y listo, 驴f谩cil no?. Ya puedes importar todos los datos que quieras a tus tablas desde un formulario hecho en tu web.

Otro usuarios llegaron aqu铆 buscando:

  • importar csv a mysql desde php
  • importar datos csv a mysql con php
  • importar archivo csv a mysql desde php
  • subir archivo csv a mysql con php
  • subir csv a mysql php

Entradas relacionadas

Deja una respuesta

Tu direcci贸n de correo electr贸nico no ser谩 publicada.

Comentarios (7)

Buenas noches, trate de usar este ejemplo para guardar datos en una base de datos de prueba pero no me funciono ni me arrojo algun error, sabes porque? Yo tengo mi duda en el campo hidden del formulario, cual es su funcion?

Responder

Ponle un control de errores para que te muestre el error en el caso de que quieras trabajar con ello.

El c贸digo es muy simple, dem谩siado, mira que la tabla se llame igual y que el campo se llame igual.

La funci贸n del campo hidden es que le pase un valor que no sea nulo, y si existe ese valor en el ‘Post’ ejecuta el resto del c贸digo. Si no le pasa este valor no puede ejecutar el c贸digo, digamos que es una ‘medida’ cutre de seguridad. F谩cil de mejorar y sobretodo f谩cil de adaptar.

Responder

Hola, estoy intentando cargar de forma autom谩tica a mi sitio web en WP los datos de productos que tengo en un fichero externo csv.
Tengo un fichero csv con filas (cada fila es un producto con 20 columnas cada una) cada columna es un dato del producto.
Lo que pretendo es que 1 vez al d铆a los productos de este fichero externo csv se carguen en mi web y que cada uno de ellos sea una ENTRADA en mi sitio web. Es decir que cuando yo entre a visitar el sitio, ya se puedan visualizar las nuevas ENTRADAS cargadas ese d铆a desde el fichero csv externo.
El fichero me lo van a enviar de forma diaria a mi servidor y lo dejar谩n en una carpeta de mi servidor donde tengo el wordpress.
驴 Sabes como lo puedo hacer ?
Muchas gracias de antemano

Responder

Buenas,
Disculpa que no te haya respondido antes, que llevo un tiempo fuera y no me he pasado por el blog.

Esto que quieres hacer para cargar productos desde un csv lo puedes hacer si tienes woocommerce, existen varios plugins para woocommerce que lo hacen.
Ahora bien, tendr铆as que prepararan una cron para que vuelva a realizar el proceso 1 vez al d铆a , o cuando quieras que se vaya refrescando el inventario.

Saludos,

Responder

Y en que momento llamas la funcion subir() en php??? como crees que funcionar谩 sin llamar la funci贸n???

Responder

jajajaja, por Magia, el c贸digo es todo magia.

Esta empaquetado en una funci贸n que tu tendr谩s que llamarla si quieres usarla, o bien puedes quitar la funci贸n, o puedes modificar el c贸digo a tu gusto.

Te muestro como lo tengo hecho, copio-pego las partes que tienen esa funcionalidad, pero obviamente hay un desarrollo detr谩s, quiz谩 un desarrollador te venga guay.

Saludos

Responder

Muy bueno tu ejemplo me fue de gran ayuda para que pudiera completar un proyecto, muy buena explicaci贸n.
Gracias amigo por la informaci贸n.

Responder