Evitar duplicados al importar MySQL y PHP

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.

Evitar duplicados al importar MySQL y PHP
Evitar duplicados al importar MySQL y PHP

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.

Índice

    ¿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.

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

    Subir