Insertar datos de archivo a una base de datos por medio de script php

Insertar datos de archivo a una base de datos. En este vídeo muestro como se hace un script en php para cargar datos de un archivo plano o archivo csv a una tabla de una base de datos mysql (mariaDB). Lo hago paso a paso explicando el funcionamiento de cada línea de código y las funciones necesarias para esta tarea.

Código:

// Creamos la conexión
$cn = new mysqli('localhost', 'root', '', 'torneos');
// validamos la conexiòn
if ($cn->connect_error) {
    die("ERRROR CONECTANDO => " . $cn->connect_error);
}
$msgLog = '';
echo $msgLog .=  "********** SCRIPT CARGA DE DATOS DE UN ARCHIVO ************\n";
//definimos el archivo
$fileName = 'data.csv';
echo $msgLog .=  "Buscando el archivo $fileName.....\n";
//abrir el archivo
echo $msgLog .=  "Abriendo archivo $fileName.....\n";
$openFile = fopen($fileName,'r');
if($openFile!==FALSE){	
	echo $msgLog .=  "Archivo encontrado .....\n";	
	$contador = 0;
	$regOk = 0;
	$regError = 0;
	while (($data = fgetcsv($openFile,1000,';'))!== FALSE) {						
		if($contador>0){
			$cantEquipo = trim($data[0]);
			$cantDuelos = trim($data[1]);			
			echo $msgLog .=  "Procesando fila $contador...\n";		
			echo $msgLog .=  "Datos encontrados en fila $contador [ $cantEquipo - $cantDuelos]...\n";		
			echo $msgLog .=  "Guardando en tabla competencia ...\n";		
			$sql="INSERT INTO competencia (Id_com, Cant_equipos, Cant_duelos) VALUES (NULL,".$cantEquipo.",".$cantDuelos.");";
			echo $sql."\n";
			$insert= $cn->query($sql);
			if($insert){
				$regOk++;
				echo $msgLog .=  "Se almaceno los valores correctamente \n";
			}else{
				$regError++;
				echo $msgLog .=  "Problema la insertar valores de la fila $contador \n";
			}
		}else{
			$contador++;
		}
	}
	echo $msgLog .=  "********** RESUMEN SCRIPT ************\n";
	echo $msgLog .=  "** filas encontradas $contador      **\n";
	echo $msgLog .=  "** registros realizados $regOk      **\n";
	echo $msgLog .=  "** errores de registro $regError    **\n";
	echo $msgLog .=  "***********************+**************\n";
	$date = date('Y-m-d H:m:i');
	echo $msgLog .= "FECHA DE CARGA => $date";
	error_log($msgLog,3,"ArchivoLog.txt");
}

En este artículo te mostraremos cómo cargar datos desde un archivo CSV a una base de datos MySQL usando un script en PHP. Este tipo de automatización es muy útil cuando necesitas importar información en bloque, por ejemplo para registrar competencias, productos, usuarios o cualquier tipo de datos estructurados.

A continuación, te explicamos paso a paso el código:

  1. Conexión a la base de datos MySQL
    El script inicia estableciendo una conexión con una base de datos llamada torneos, utilizando mysqli:
$cn = new mysqli('localhost', 'root', '', 'torneos');
if ($cn->connect_error) {
    die("ERRROR CONECTANDO => " . $cn->connect_error);
}

Si ocurre un error al conectar, el script se detiene con un mensaje.

  1. Lectura del archivo CSV
    Se define el nombre del archivo CSV (data.csv) y se intenta abrir con fopen:
$fileName = 'data.csv';
$openFile = fopen($fileName, 'r');
  1. Procesamiento de las filas
    Se recorre cada fila del archivo usando fgetcsv, omitiendo la primera fila (que generalmente es la cabecera).
while (($data = fgetcsv($openFile, 1000, ';')) !== FALSE) {
    if($contador > 0){
        $cantEquipo = trim($data[0]);
        $cantDuelos = trim($data[1]);
        ...
    }
}
  1. Inserción en la base de datos
    Cada fila se convierte en un INSERT INTO a la tabla competencia:
$sql = "INSERT INTO competencia (Id_com, Cant_equipos, Cant_duelos) VALUES (NULL, $cantEquipo, $cantDuelos);";
$insert = $cn->query($sql);
  1. Registro de actividad y errores
    El script cuenta cuántos registros se insertaron correctamente y cuántos fallaron. Todo el proceso se documenta y se guarda en un archivo de log llamado ArchivoLog.txt usando error_log.
  2. Resumen del proceso
    Al final del script se muestra un resumen con la cantidad de filas procesadas, registros insertados y errores.

¿Por qué es útil este script?

  • Automatiza la carga masiva de datos.
  • Útil en sistemas de gestión, torneos, inventarios y más.
  • Genera un log con información detallada para auditar el proceso.

Conclusión

Este ejemplo práctico de cómo leer un CSV e insertarlo en una base de datos MySQL con PHP es una excelente base para desarrolladores que trabajan con migración de datos o carga automatizada. Puedes adaptarlo fácilmente para otros tipos de datos o estructuras de tablas.

¿Te gustaría recibir más scripts útiles para desarrollo en PHP? ¡Déjalo en los comentarios!

¡Mensaje enviado!