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 INTOa 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.txtusandoerror_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!