Carga de archivos CSV para manejar la actualización de estado e insertar nuevos registros

Mientras trabajo en un proyecto, alojado localmente, estoy atascado en la administración de cargas CSV. Una de las tareas requiere que cargue datos diariamente que tengan entradas nuevas o un estado actualizado para las entradas existentes. También existe la probabilidad de que algunas de las entradas (que existen en la base de datos) no tengan un estado actualizado.

Planteamiento del problema;

Creé una función de carga CSV que carga el archivo CSV en una ubicación particular e importa la información en la TABLA asignada. Quiero saber cuál es la mejor manera de verificar los registros de la base de datos cuando realizo la carga de CSV.

Idealmente debería funcionar de la siguiente manera;

si la entrada no existe (INSERTAR nuevos datos de base de entrada del archivo CSV)si la entrada existe y tiene el mismo estado que el nuevo archivo CSV cargado (IGNORAR & hacer nada)si la entrada existe y tiene un estado DIFERENTE al del nuevo archivo CSV cargado (ACTUALIZAR estado a lo que se menciona en el archivo CSV)Estructura de archivo de base de datos / CSVtracking_id (incremento automático)un número (cargado a través de CSV y puede tener entradas duplicadas)guía aérea (cargada a través de CSV y UNIQUE)mensajero (cargado a través de CSV y puede tener entradas duplicadas)delstatus (cargado a través de CSV y es lo que se actualiza principalmente)fecha de entrega (cargada a través de CSV y se actualiza con cada entrega)

De lo anterior, delstatus se actualiza casi cada vez (para entradas existentes) se carga el nuevo CSV y, por lo tanto, debe verificarse.

Supongo que podemos elegirguía aérea'para verificar si existe, y si es así, verifique sidelstatus es igual que el archivo CSV o la actualización. Si no existe 'guía aérea', entonces se deben agregar nuevos registros a la base de datos. Como eso me salvaría de ingresar todos los registros en la base de datos innecesariamente. O se puede hacer puede ser de una mejor manera (que todavía estoy por explorar).

¿Qué está pasando ahora mismo?

Puedo cargar el conjunto completo de archivos CSV, creando nuevas entradas en la base de datos a través del siguiente código.

<?php 

if(isset($_POST['csv']))
{
$sqlname= 'localhost';
$username= 'root';
$table= 'tracking';
$password= '';
$db='aatrack';
$file=$_POST['csv'];
$cons= mysqli_connect("$sqlname", "$username","$password","$db") or die(mysql_error());

$result1=mysqli_query($cons,"select count(*) count from $table");
$r1=mysqli_fetch_array($result1);
$count1=(int)$r1['count'];


mysqli_query($cons, '
    LOAD DATA LOCAL INFILE "'.$file.'"
        INTO TABLE '.$table.'
        FIELDS TERMINATED by \',\'
        LINES TERMINATED BY \'\n\'
        IGNORE 1 LINES
')or die(mysql_error());

$result2=mysqli_query($cons,"select count(*) count from $table");
$r2=mysqli_fetch_array($result2);
$count2=(int)$r2['count'];

$count=$count2-$count1;
if($count>0)
{
    header("location:success.php?id=$count");
}

}

?>

¿Pueden ayudarnos a guiar de la mejor manera posible para lograr lo mismo? Entiendo que se puede hacer cargando primero la información en una tabla temporal y comparando la misma antes de que las entradas se actualicen en la tabla EN VIVO.

Sugiera una forma óptima de lograr los resultados.

Gracias por leer hasta aquí.

Atentamente,

Amit Agnihotri

Respuestas a la pregunta(2)

Su respuesta a la pregunta