Inicio » Blog » PHP

16 diciembre, 2018

Importar un Archivo CSV a una BD en PHP

Abrimos el archivo CSV con fgetcsv luego recorremos sus elementos para almacenarlos en una Base de Datos MYSQL usando el Lenguaje PHP y los mostramos

Suscríbete a nuestro canal en Youtube

Suscríbirse

En este tutorial de PHP y Mysql vamos a llenar una tabla de una base de datos mysql con los datos de un archivo CSV, empecemos con:

Los pasos para importar un archivo CSV a Mysql son:

  1. Abrir la conexión a la Base de Datos Mysql
  2. Abrir el Archivo CSV con fopen()
  3. Recorrer los elementos usando la función fgetcsv() con while
  4. Insertar a una tabla los datos parseados
  5. Cerrar el archivo CSV y cerrar la conexión a la BD MYSQL.
  6. Finalmente mostramos los registros insertados

Y listo.

Abrir la conexión a la Base de Datos Mysql

Debemos tener una Base de datos en Mysql con el nombre de codea con una tabla vacia con la estructura para insertar los datos desde el CSV

CREATE TABLE `agenda` (
  `id` int(11) NOT NULL,
  `nombre` varchar(50) NOT NULL,
  `apellidos` varchar(50) NOT NULL,
  `dni` varchar(8) NOT NULL,
  `celular` varchar(9) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

ALTER TABLE `agenda`
  ADD PRIMARY KEY (`id`);
ALTER TABLE `agenda`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

Creamos un archivo llamado conexion.php donde establecemos la conexión a la base de datos Mysql. Esta clase permite conectarnos a la base de datos bdcsv ademas de proveernos de dos métodos para manipular datos como es

  1. insert() .- Crea registros 
  2. search) .- Busca registros de acuerdo a un criterio de búsquedad o condición
<?php 
class DBconexion{    
    private $host   ="localhost";
    private $usuario="root";
    private $clave  ="";
    private $db     ="codea";
    public $conexion;
    public function __construct(){
        $this->conexion = new mysqli($this->host, $this->usuario, $this->clave,$this->db) or die(mysql_error());
        $this->conexion->set_charset("utf8");
    }
    public function insert($tabla, $datos){
        $resultado =    $this->conexion->query("INSERT INTO $tabla VALUES (null,$datos)") or die($this->conexion->error);
        if($resultado)
            return true;
        return false;
    } 
    public function search($tabla, $condicion){
        $resultado = $this->conexion->query("SELECT * FROM $tabla WHERE $condicion") or die($this->conexion->error);
        if($resultado)
            return $resultado->fetch_all(MYSQLI_ASSOC);
        return false;
    } 
}
 ?>

En el archivo index.php instanciamos a la base de datos, luego la abrimos creando un objeto que lo almacenaremos en la variable $user

<?php
include "conexion.php";
$user   =   new DBconexion(); 
....
?>

 

Abrir el Archivo CSV con fopen()

Debemos tener el mismo directorio el archivo .CSV  con los datos listos para ser importados, para este tutorial tenemos la siguiente estructura del archivo llamado agenda.csv

Nombre,Apellido,Dni,Celular
Juan,Contreras,42882321,950092356
Adriana,Angelina,42312331,950043022
Olivia,Perkins,32876523,950064545
Natalia,Vergara,42009321,998920022

Como puede notar esta los datos esta separados por comas (,) pero ademas vemos que tienen una distribución línea a línea, donde cada línea representa un registro correspondiente a los datos de una persona de la agenda.

Modificamos el archivo index.php para agregar la apertura del archivo agenda.csv

$fp     =   fopen ("agenda.csv","r");

 

Recorrer los elementos usando la función fgetcsv() con while

En el archivo index.php insertamos los datos en los campos de la tabla agenda, para tal efecto usamos la estructura repetitiva while.

while ($data = fgetcsv ($fp, 100, ",")):
 ....
endwhile;

 

Insertar a una tabla los datos parseados

La siguiente usa la consulta para insert() para insertar nuevos registros en la tabla agenda.

$u=$user->insert("agenda","'".$data[0]."','".$data[1]."','".$data[2]."','".$data[3]."'");

 

Cerrar el archivo CSV y cerrar la conexión a la BD MYSQL.

fclose ($fp); 
....
$user  =   null;

Finalmente mostramos los registros insertados

/// MOSTRAR LOS REGISTROS INSERTADOS 
$u     =   $user->search("agenda","1");
$user  =   null;

$html   =   "<table border=1>";
$html   .= "<tr>
    <th>NOMBRE</th>
    <th>APELLIDOS</th>
    <th>DNI</th>
    <th>CELULAR</th>
    </tr>";
foreach ($u as $data)
       $html.= "<tr>
       <td>".$data['nombre']."</td>
       <td>".$data['apellidos']."</td>
       <td>".$data['dni']."</td>
       <td>".$data['celular']."</td>
       </tr>";
 $html.="</table>";
 echo $html; 

 

Código fuente completo en PHP es 

<?php
include "conexion.php";
$user   =   new DBconexion(); 

// IMPORTAR CSV A LA TABLA AGENDA
$fp     =   fopen ("agenda.csv","r");

while ($data = fgetcsv ($fp, 100, ",")):
    $u=$user->insert("agenda","'".$data[0]."','".$data[1]."','".$data[2]."','".$data[3]."'");
endwhile;
fclose ($fp); 

/// MOSTRAR LOS REGISTROS INSERTADOS 
$u     =   $user->search("agenda","1");
$user  =   null;

$html   =   "<table border=1>";
$html   .= "<tr>
    <th>NOMBRE</th>
    <th>APELLIDOS</th>
    <th>DNI</th>
    <th>CELULAR</th>
    </tr>";
foreach ($u as $data)
       $html.= "<tr>
       <td>".$data['nombre']."</td>
       <td>".$data['apellidos']."</td>
       <td>".$data['dni']."</td>
       <td>".$data['celular']."</td>
       </tr>";
 $html.="</table>";
 echo $html; 
?>

Para mostrar los datos generamos dinámicamente una tabla html

 


Leido 8918 veces

Descarga el código fuente PHP

Recurso descargado 44 veces

USD

Descargar Código Fuente

Compartir link del tutorial con tus amigos


MVC PHP y MySql Página Web MVC PHP y MySql Página Web

Curso MVC PHP MySQL desarrollo de una página web administrable

Descarga del código fuente

USD 7.00

Aprende más sobre PHP

Cursos de programación

Codea Codea App

México, Colombia, España, Venezuela, Argentina, Bolivia, Perú

© Todos los derechos reservados Codea App | ...de frente al código!!! | 2020 - 2023