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:
- Conexión a la base de datos MySQL
El script inicia estableciendo una conexión con una base de datos llamadatorneos
, utilizandomysqli
:
$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.
- Lectura del archivo CSV
Se define el nombre del archivo CSV (data.csv
) y se intenta abrir confopen
:
$fileName = 'data.csv';
$openFile = fopen($fileName, 'r');
- Procesamiento de las filas
Se recorre cada fila del archivo usandofgetcsv
, 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]);
...
}
}
- Inserción en la base de datos
Cada fila se convierte en unINSERT INTO
a la tablacompetencia
:
$sql = "INSERT INTO competencia (Id_com, Cant_equipos, Cant_duelos) VALUES (NULL, $cantEquipo, $cantDuelos);";
$insert = $cn->query($sql);
- 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 llamadoArchivoLog.txt
usandoerror_log
. - 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!