Saltar al contenido

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.

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

Join the conversation

Tu dirección de correo electrónico no será publicada.