Evitar duplicados al importar MySQL y PHP
Evitar duplicados al importar MySQL y PHP. La mayoría de sistemas web o de escritorio trabajan con importación de registros hacia la base de datos para optimizar los procesos. Sin embargo, el problema que suele presentarse son los registros duplicados.
Para dar solución a estos detalles he preparado este artículo que abordaremos en tema con profundidad y mostraremos dos formas para lograr el objetivo.
Ejemplo de importación CSV
if (file_exists('temp.csv')) { $i=0; require "connection.php"; $handle = fopen("temp.csv", "r"); try { $import= $db->prepare("INSERT INTO adherence( dateandtime, lastname, firstname, paidtime, approvedtime, notadhering) VALUES( ?,?,?,?,?,?)"); $i = 0; while (($data = fgetcsv($handle, 1000, ",", "'")) !== FALSE) { if($i > 0) { $data = str_replace('"', '', $data); $myDate = date("Y/m/d",strtotime(str_replace('/','-',$data[0]))); $import->bindParam(1, $myDate, PDO::PARAM_STR); $import->bindParam(2, $data[1], PDO::PARAM_STR); $import->bindParam(3, $data[2], PDO::PARAM_STR); $import->bindParam(4, $data[3], PDO::PARAM_STR); $import->bindParam(5, $data[4], PDO::PARAM_STR); $import->bindParam(6, $data[5], PDO::PARAM_STR); $import->execute(); } $i++; } fclose($handle);
En el script anterior la importación es un éxito, pero el detalle es evitar registros duplicados al volver ejecutar el script o cargar otro fichero de CSV.
Necesitamos tipo de lógica condicional para verificar si la fila del fichero Excel ya existe en la base de datos antes de importarla y omitirla.
¿Se puede evitar registros duplicados al importar a MySQL?
La respuesta es un sí. Si existe, y en este articulo detallaremos la forma de hacerlo con un ejemplo completo.
Evitar duplicados al importar MySQL y PHP
Básicamente hay dos formas genéricas y diferentes de hacerlos, veamos a continuación los ejemplos.
Primera forma: A través de los rdbms:
Use un índice único en su tabla. Una vez que inserte un duplicado, encontrará un error, que se puede mostrar/registrar/lo que sea correctamente.
Recuerde que. – La restricción UNIQUE en SQL se utiliza para garantizar que no se inserten valores duplicados en una columna específica o combinación de columnas que participen en la restricción UNIQUE.
Segunda forma: Usando la lógica de la aplicación:
Busque la columna que desea insertar y antes de insertarlo use la instrucción SELECT adecuada para buscarlo en la tabla. Si encuentra una coincidencia, no la inserte y continúa validando los demás registros.
Ejemplo:
$sth = $db->prepare("SELECT campo_buscado FROM mitable WHERE condicion= :cond"); $sth->bindParam(':cond',$mivariable, PDO::PARAM_STR); $sth->execute(); if ($sth->rowCount() > 0) { // resultado existente - No insertar } else { // No hay resultados - insertar registro }
Conclusión
En la mayoría de las condiciones, los codificadores implementarán la primera forma, ya que reduce el tráfico entre la aplicación y RDBMS y hace que su modelo de datos sea más sólido. Si esto es un problema, intente de la segunda manera.