estoy actualizando una base de datos desde un archivo csv con REPLACE y todo funciona correctamente. Los nuevos registros se insertan y los que ya estaban se vuelven a insertar por si había un cambio en algun campo.
El problema es que si se ha borrado alguna fila en el archivo csv, permanece en la base de datos. Hay alguna manera de saber los registros que se han cambiado con el REPLACE y así borrar los que no han sido afectados por la consulta?
O es mejor hacer un TRUNCATE y luego un INSERT y así me olvido de los que han sido borrados?
Dejo aquí el código que utilitzo:
Código PHP:
$tipo_archivo = $_FILES['txt_file']['type'];
if(isset($_POST['submit'])){
if(!(strpos($tipo_archivo, "csv"))){
$conn = mysql_connect("servidor","nombre","pasw");
mysql_select_db("Municipales_inclusio",$conn);
$filename=$_FILES['filename']['tmp_name'];
$handle =fopen("$filename","r");
while (($data = fgetcsv($handle, 4000, ";")) !== FALSE){
$import="REPLACE INTO mapa_recursos(Id,Institucion,Persona_contacto) values ('$data[0]','$data[1]','$data[2]');";
$consulta = mysql_query($import,$conn) or die (mysql_error());
}
fclose($handle);
//mensaje de exito.
$titulo = "Mapa de recursos";
$mensaje = "La base de datos se ha actualizado correctamente";
include("mensajes.php");
exit;
} else{
print "Archivo no válido";
}
}